Я понимаю, как работает STI, в этом я говорю модель Post, которая
содержит сообщения на форуме и несколько вложенных сообщений, таких как
«normalUserPost» и «adminUserPost» и т. д.
Теперь я хочу определить один и тот же метод в каждом из подпостов, но
метод будет делать что-то свое в каждом случае, например
class Post < ActiveRecord::Base
end
class AdminUserPost < Post
def background_color
'rockstar red'
end
end
class OrdinaryUserPost < Post
def background_color
'pale blue'
end
end
(да, это глупый пример). Теперь в моем контроллере потока я делаю Post.find
(: все), и это дает мне список сообщений, которые мне нужно сделать, но они
«Опубликовать» объекты, а не AdminUserPost или OrdinaryUserPost - поэтому я не могу
просто получите мой метод background_color! Я должен был бы найти на
каждый тип сообщения пользователя отдельно ...
Могу ли я в любом случае сделать:
Post.find(:all)
И в результирующем массиве получить список AdminUserPost и
Объекты OrdinaryUserPost вместо объектов Post?
Или есть хороший способ «приведения» моих объектов Post в AdminUserPost и OrdinaryUserPost в зависимости от ситуации?
EDIT:
Это работает должным образом - при условии, что у вас есть столбец с именем 'type' в классе Post. Если ваш столбец называется чем-то другим, например, post_type, вам нужно добавить:
self.inheritance_column = 'post_type'
Во ВСЕХ дочерних моделях (AdminUserPost и OrdinaryUserPost в этом примере) и в родительских (Post).
Спасибо
Стивен.