0
多くの結合でアクティブレコードを使用して選択を行いました。これにより重複した値が発生しました。 を選択した後には、という別の関数の値が:idになります。しかし、それは動作しませんでした!もちろんActiveRecordの区別が機能しない
def join_query
<<-SQL
LEFT JOIN orders on orders.purchase_id = purchases.id
LEFT JOIN products on products.id = orders.complete_product_id
SQL
end
def select_query
<<-SQL
purchases.*,
products.reference_code as products_reference_code
SQL
end
result = Purchase.joins(join_query)
.select(select_query)
.distinct(:id)
、どちら明確な:
は、ここでは、コードです!またはuniq関数が機能しました。 は別です!は、「ActiveRecord :: ImmutableRelation」のエラーを返しました。私はそれが何を意味するのかわかりません。
これを解決するには、ActiveRecord_Relationオブジェクトを配列に変換するハックを行い、Rubyの関数をユニークにしました。
ここでは何が起こっていますか?
'ImmutableRelation'はActiveRecordのは、(http://api.rubyonrails.org/classes/ActiveRecord/ImmutableRelation.html)[すでにクエリをフェッチしている]ことを意味します。最後に 'join 'を入れてみてください。 – sjagr
あなたはどのRDBMSを使用していますか? '.distinct(:id)'を使わないとあなたは何を見ますか?フェッチされたレコードを選択しようとしているので、 '.distinct(:id)'の使用が問題であるとは思わない。 –