我刚刚开始使用Rails,遇到了一个我无法解决的问题:
User.rb:
has_many :bid_listings, through: :bids, source: :listing, uniq: true
has_many :offer_listings, through: :offers, source: :listing, uniq: true
这两个返回列表,并使用Listing模型中的方法/范围单独工作。但是,当我尝试组合这些时,我得到一个数组,我无法应用上市模型的方法和范围。
我尝试了多种方法,但卡住了。请帮忙。
P.S。用户有多个出价,用户有多个优惠,出价属于上市,优惠属于上市
答案 0 :(得分:2)
您在Array对象上调用实例方法,而不是在ActiveRecord对象上调用。因此,Array类型的对象不知道搜索方法是什么。试试这个:
修改强>
user = User.first
listings = Listing.joins(:bids).joins(:offers).where(:bids => {:user_id => user.id}, :offers => {:user_id => user.id})
listings.search('a')
答案 1 :(得分:0)
我遇到了类似的问题,我提出的最佳解决方案是:
def buying_listings
Listing.find_by_sql(bid_listings.union(offer_listings).to_sql)
end
这种方式仍然允许您继续使用作用域,但效率较低,因为它会执行额外的查询。