设置了我的多态关系:
class Review < ActiveRecord::Base
belongs_to :reviewable, :polymorphic => true
belongs_to :user
end
class Wine < ActiveRecord::Base
has_many :reviews, :as => :reviewable
end
class Beer < ActiveRecord::Base
has_many :reviews, :as => :reviewable
end
我可以做Wine.last.reviews和Beer.find(3).reviews等......
我正在努力做的是向另一个方向前进,即让我说我想找到Wine的最新10条评论和过去10条对Beer的评论。
答案 0 :(得分:3)
最简单的方法是将命名范围添加到指定Review
列的reviewable_type
模型中。
像这样:
class Review < ActiveRecord::Base
belongs_to :reviewable, :polymorphic => true
belongs_to :user
named_scope :for_wines, :conditions => { :reviewable_type => 'Wine' }
named_scope :for_beers, :conditions => { :reviewable_type => 'Beer' }
end
这样,在找到结果时,您可以灵活地确定范围...
Review.for_wines.approved.all
Review.for_beers.active.find(:all, :order => 'created_at')
等