私はUserモデルを持っているとしましょう。ユーザーにはhas_manyという2つの関連付けがあります。つまり、ユーザーは多くの鉛筆を持ち、多くの車を所有しています。 Cars and Pencilsテーブルには、同じ属性、:date、およびspeed(car)と:length(pencil)のようなものがあります。私は配列/リレーション[:日付、:スピード、:長さ]を持つように、ユーザーの鉛筆と車の一般的な属性:日付に参加したい。どのように達成するには、私は結合を試み、マージしますが、彼らは役に立たなかった。共通の属性に2つのActiveRecordアソシエーションを結合する
2
A
答えて
1
私は間違いなく、効率のために、クエリではなく、ループにこれを取得お勧めします。
Car.joins(:user => :pencils).where("pencils.date = cars.date")
をそして、あなたはすぐに、配列にそれを減らしたい場合:私は、これが機能すると思います
Car.joins(:user => :pencils).where("pencils.date = cars.date").pluck("cars.date", "cars.speed", "pencils.length")
あなたはdate
がnil
で試合を含める必要がある場合は、追加する必要があります
Car.joins(:user => :pencils).where("(pencils.date = cars.date) OR (pencils.date IS NULL AND cars.date IS NULL)")
1
多くのより効率的な選択肢が存在するが、ここでは一つの可能なアプローチは次のとおりです。
class User < ActiveRecord::Base
def get_merged_array
dates = (cars.map(&:date) & pencils.map(&:date))
results = []
dates.each do |date|
cars.where(date: date).each do |car|
pencils.where(date: date).each do |pencil|
results << [date, car.speed, pencil.length]
end
end
end
results
end
end
関連する問題
- 1. 作成時にhas_many:throughアソシエーションの結合テーブルレコードに属性値を追加
- 2. 2つのテーブルを結合して共通の値を取得する方法
- 3. が共通の列なしでテーブルを結合するが、私は、2つのテーブルを結合する
- 4. 2つのactiverecordクエリを結合する方法は?
- 5. Sequelizeアソシエーションに属性を追加する
- 6. 同じレコードの2つの属性を比較するactiverecordクエリをレンダリングする
- 7. MySQLで共通の属性を持つ2つのエンティティを実装する方法は?
- 8. ActiveRecord結合モデルの属性をクエリ結果で使用できるようにする
- 9. 検索フィルタの複数の共通フィールドを持つ2つのテーブルを結合する方法
- 10. 2つの反応性プロパティを反応性結合と反応性結合を組み合わせる
- 11. 共通のイベントプロパティで2つのイベントストリームを結合するにはどうすればよいですか?
- 12. 2つの結果を結合する
- 13. XSL select要素に2つの属性がある場合
- 14. レール3 ActiveRecordアソシエーション
- 15. Rails ActiveRecordアソシエーション
- 16. @ ManyToMany/@ OneToMany bidirectionalアソシエーション用のmappedby属性
- 17. 処理中に、共通属性のマトリックススタックがありますか?
- 18. has_many:throughアソシエーションとその結合モデル属性はどのように相互作用しますか?
- 19. ソフト削除カスケードリカバリに関する共通属性
- 20. styles.xmlファイルのすべてのボタンに共通のonClick属性を宣言する
- 21. は、ストームボルトの共通フィールドに基づいて2つのストリームを結合します。
- 22. 共通の列によって2つの.csvファイルを組み合わせる
- 23. 2つのリストの共通値のメソッド
- 24. ActiveRecordモデル属性を設定する
- 25. ActiveRecordモデルをサブモデル属性でソートする?
- 26. 共通の列を使用して2つのファイルを統合する
- 27. プライマリキー以外の属性にcoreDataを結合する
- 28. 2つのPythonジェネレータの共通項目
- 29. アソシエーションのActiveRecord条件(Rails)
- 30. ActiveRecordオブジェクトとアソシエーションのキャッシュ
これは素晴らしい解決策であるように見えますが、試してみてください。もう一つの質問です。もし私が完全な外部の参加をしたいのであれば、私は車と鉛筆を取得したいと思います。 –