2012-02-26 15 views
11

tengo una clase llamada Post:cómo personalizar los carriles 3 ITS nombre de la columna

class Post < ActiveRecord::Base 
end 

he llamado una clase Question que la herencia de Post:

class Question < Post 
end 

y he llamado una clase Answer que también hereda de 'Post':

class Answer < Post 
end 

En Post, tengo una columna llamada post_type_id y su 'tipo es Integer.
¿Cómo uso STI y el nombre de columna específico & para heredar de la publicación? 0 significa Question y 1 significa Answer. (0 & 1 es el valor de post_type_id en la tabla mensajes)

+0

http://stackoverflow.com/questions/7134559/rails-use-type-column-without-sti – apneadiving

Respuesta

21

Puede cambiar el nombre de la columna de la tabla única herencia de este modo:

class Post < ActiveRecord::Base 
    self.inheritance_column = 'type_column_name' 

end 

Sin embargo, no hay manera de hacer que los carriles para utilizar números enteros en lugar de almacenar el tipo real como una cadena, lo que me hace pensar que este puede no ser un gran caso de uso para la herencia de un solo objetivo. Tal vez un alcance le conviene más bien en su lugar:

class Post < ActiveRecord::Base 
    scope :questions, where(:post_type_id => 0) 
    scope :answers, where(:post_type_id => 1) 

end 

@questions = Post.questions.all 
@answers = Post.answers.all 
8

Realmente hay una manera, como con todas las cosas. Puede anular el método find_sti_class para buscar su tipo basado en un número entero.

Cuestiones relacionadas