Допустим, у вас есть SiteUpdate и модель Comment, и вы хотите сделать комментарий полиморфным.Вы делаете комментарий, держите "commentable_id" и "commentable_type" ...
Вот наша модель комментария:
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
validates_presence_of :content
validates_presence_of :commentable
end
Вот наш SiteUpdate:
class SiteUpdate < ActiveRecord::Base
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
has_many :comments, :as => :commentable
validates_presence_of :subject
validates_length_of :subject, :maximum => 80
validates_presence_of :intro
validates_length_of :intro, :maximum => 200
validates_presence_of :text
validates_presence_of :author
scope :sorted, order("site_updates.created_at desc")
end
Rails связывают комментарий с экземпляром site_update, или я должен сделать это вручную?
@site_update.comments << Factory.build(:comment, :commentable_id => nil)
@site_update.save
Это не удается -> он жалуется, что comment.commentable_id не должен быть пустым (я установил эту проверку в комментариимодель).
Так я делаю это вручную или неправильно настрою?
Или я вообще не проверяю это?