我有三个模型User
:Product
和Transaction
。(Transaction
belongs_to both, and have User
many Product
and have Product
many User
, through Transaction
)
在我的Transaction
模型中,我有一个current
交易范围:
scope :current, -> { where 'transactions.start_date IS NOT NULL AND transactions.end_date IS NULL' }
我希望能够在控制台中执行此操作,以检索所有具有current
交易的产品:
User.first.products.owned
在控制台中,我可以通过以下方式实现:
User.first.products.merge(Transaction.current.ownership)
第一次尝试
所以我在我的Product
模型中添加了这个:
def self.owned
merge(Transaction.current.ownership)
end
我在控制台中输入:
User.first.products.owned
但这里什么是 rails 控制台告诉我:
NoMethodError: undefined method `merge' for #<Class:0x00000004e2c0f8>
from /home/flo/.rvm/gems/ruby-2.0.0-p195/gems/activerecord-4.0.0.rc1/lib/active_record/dynamic_matchers.rb:22:in `method_missing'
其他尝试
如果我在我的Product
模型中添加这个:
def self.owned
joins(:transactions).merge(Transaction.current.ownership)
end
我在控制台中输入:
User.first.products.owned
但它检索所有具有当前交易的产品,而不仅仅是第一个用户的具有当前交易的产品。
你知道我做错了什么吗?