has_one关联的未知列错误并在命名作用域中加入

时间:2010-11-15 21:44:42

标签: ruby-on-rails activerecord

我有一个带有以下关联的产品和payment_notification模型

class Product < ActiveRecord::Base
  has_one :payment_notification
end

class PaymentNotification < ActiveRecord::Base
  belongs_to :product
end

我正在设置一个命名范围,该范围应该获取其关联的payment_notification已完成状态的所有产品。

我认为这应该适用于我的产品型号:

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

但是这会导致以下错误:

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

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:6)

试试这个:

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

注意复数:payment_notifications