Направляет полиморфные отношения в другом направлении

StackOverflow https://stackoverflow.com/questions/1799057

Вопрос

Установив мои полиморфные отношения вот так:

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')

и т.д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top