Rails-组合多个has_many直通



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

用户.rb:

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

这两种方法都返回清单,并且单独使用清单模型中的方法/作用域可以完美地工作。然而,当我试图将它们组合在一起时,我得到了一个数组,在那里我不能应用Listing模型的方法和范围。

我试过多种方法,但都坚持了下来。请帮忙。

p.S.用户有很多出价,用户有很多报价,出价属于挂牌,报价属于挂牌

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

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

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

这种方式应该仍然允许您继续作用域,但效率较低,因为它将执行额外的查询。

相关内容

  • 没有找到相关文章

最新更新