3

Rails を使い始めたばかりで、自分では解決できない問題があります。

ユーザー.rb:

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

これらは両方ともリスティングを返し、リスティング モデルのメソッド/スコープを使用すると、個別に完全に機能します。ただし、これらを組み合わせようとすると、リスト モデルのメソッドとスコープを適用できない配列が得られます。

複数の方法を試しましたが、行き詰まりました。助けてください。

PS ユーザーには多くの入札があります, ユーザーには多くのオファーがあります, 入札はリストに属します, オファーはリストに属します

4

2 に答える 2

2

ActiveRecord オブジェクトではなく、Array オブジェクトでインスタンス メソッドを呼び出しています。したがって、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 に答える