Carriles relación polimórfico en la otra dirección
-
22-09-2019 - |
Pregunta
Después de haber configurado mi relación polimórfica de esta manera:
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
Me puede hacer Wine.last.reviews y Beer.find (3) .reviews etc ...
Lo que estoy strugling que hacer es ir en la otra dirección, es decir, digamos que quiero encontrar los últimos 10 comentarios de vino y los últimos 10 comentarios de la cerveza.
Solución
La forma más sencilla de hacer esto es probablemente para añadir un ámbito llamado a su modelo Review
que especifica la columna de la reviewable_type
.
Al igual que:
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
De esa manera usted tiene la flexibilidad de la determinación del alcance, cuando la búsqueda de sus resultados ...
Review.for_wines.approved.all
Review.for_beers.active.find(:all, :order => 'created_at')
etc.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow