导轨在另一个方向上的多态的关系
-
22-09-2019 - |
题
已经建立了我的多态的关系像这样:
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等...
什么我strugling做的是去另一个方向,即可以说,我想找到葡萄酒啤酒最后的10条和最后10条。
解决方案
做到这一点,最简单的方法可能是一个名为范围添加到您的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')
等
不隶属于 StackOverflow