Как настроить имя столбца STI Rails 3

У меня есть класс с именем Post:

class Post < ActiveRecord::Base
end

У меня есть класс с именем Question, который наследует от Post:

class Question < Post
end

и у меня есть класс с именем Answer, который также наследуется от "Post":

class Answer < Post
end

В Post у меня есть столбец с именем post_type_id, а его тип - Integer.
Как использовать STI и определенное имя столбца и тип для наследования от Post? 0 означает Question и 1 означает Answer. (0 и 1 - значение post_type_id в таблице сообщений)

Ответ 1

Вы можете изменить имя столбца наследования одной таблицы следующим образом:

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

end

Однако нет способа заставить Rails использовать целые числа вместо хранения фактического типа в виде строки, что заставляет меня думать, что это не может быть большим прецедентом для единственного целевого наследования. Возможно, вам понадобится область применения:

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

Ответ 2

На самом деле есть способ, как и все. Вы можете переопределить метод find_sti_class, чтобы искать свой тип на основе целого числа.