Мне известно о количестве сообщений на эту тему, но я все еще не могу понять, как это сделать. У меня есть модель "InspirationItem", которая в основном представляет собой сообщения в блоге. Теперь я тоже хочу вторую модель, «Специальную». Специальные предложения, как элементы вдохновения, но у них есть дополнительные свойства, такие как «выдержка» и «тема». Поэтому я хочу расширить модель «InspirationPost».
Я пытался создать модель "Post", которую расширяют и InspirationItem, и Special, но InspirationItem действительно не добавляет никаких свойств. Затем я создаю отношение «has_one» из InspirationItem / Special и пытаюсь использовать «делегат» для обработки всех логик в модели «Post». Однако это не работает так, как я ожидал.
Вот мой код. Это был бы мой InspirationItem:
class InspirationItem < ActiveRecord::Base
has_one :post, :as => :item
delegate :title, :title=,
:body, :body=,
:category_names, :category_names=,
:hide_from_overview, :hide_from_overview=,
:to => :post, :allow_nil => true
end
А это короткая версия сообщения:
class Post < ActiveRecord::Base
attr_accessible :title, :body, :embed, :hide_from_overview, :visual, :thumbnail, :category_names
# All sorts of logics
end
Важно то, что я не хочу, чтобы InspirationItem.all тоже возвращал Specials, поэтому я использую модель Post. Я также хочу, чтобы обычная обработка ошибок работала для всех моделей. Заранее спасибо!