3

我刚开始使用 Rails,有一个我自己无法解决的问题:

用户.rb:

has_many :bid_listings, through: :bids, source: :listing, uniq: true          
has_many :offer_listings, through: :offers, source: :listing, uniq: true

这两个返回列表,以及使用列表模型中的方法/范围都可以完美地工作。但是,当我尝试组合这些时,我得到一个数组,我无法在其中应用列表模型的方法和范围。

我尝试了多种方法,但卡住了。请帮忙。

PS用户有很多出价,用户有很多出价,出价属于listing,offer属于listing

4

2 回答 2

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')
于 2012-08-26T11:11:53.920 回答
0

我遇到了类似的问题,我想出的最佳解决方案是:

def buying_listings
  Listing.find_by_sql(bid_listings.union(offer_listings).to_sql)
end

这种方式仍应允许您继续确定范围,但效率较低,因为它会执行额外的查询。

于 2013-02-14T04:36:40.077 回答