Направляет полиморфные отношения в другом направлении
-
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 и т.д...
То, что я изо всех сил пытаюсь сделать, это пойти в другом направлении, т. е.Допустим, я хочу найти последние 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