2010-11-15 1 views
1

J'ai un modèle de produit et payment_notification avec l'association suivanteerreur de colonne inconnue avec l'association has_one et se joindre à la portée du nom

class Product < ActiveRecord::Base 
    has_one :payment_notification 
end 

class PaymentNotification < ActiveRecord::Base 
    belongs_to :product 
end 

Je la mise en place d'un champ nommé qui devrait chercher tous les produits dont payment_notification associé a la état terminé.

J'avais l'impression que cela devrait fonctionner dans mon modèle de produit:

scope :completed, joins(:payment_notification).where(:payment_notification => { :status => 'Completed' }) 

Mais cela se traduit par l'erreur suivante:

Error: Mysql::Error: Unknown column 'payment_notification.status' in 'where clause': SELECT  `products`.* FROM  `items` INNER JOIN `payment_notifications` ON `payment_notifications`.`product_id` = `productss`.`id` WHERE  (`payment_notification`.`status` = 'Completed') 

Quelqu'un peut-il aider?

+0

J'ai juste appris de cette façon comment utiliser le hachage et se réunir, ce qui n'est pas mentionné dans le guide de requête ActiveRelation. Je vous remercie! Très utile pour prendre un tableau dans params [] et construire une requête basée sur les paramètres. – corbin

Répondre

6

Essayez ceci:

scope :completed, joins(:payment_notification).where(:payment_notifications => 
        { :status => 'Completed' }) 

Avis pluriel: payment_notifications.

+0

Doh! Merci, ça l'a fait! – KJF

Questions connexes