現在、次のコードを使用していくつかのテスト データをシードしようとしています。
# add vehicle
trim = Trim.where(:id => 1 + Random.rand(250)).first
model_year_array = trim.model_years.all(:select => :id).collect(&:id)
vehicle = Vehicle.create(trim_id: trim.id, model_year_id: model_year_array[Random.rand(model_year_array.length - 1)])
それはかなり自明だと思います-基本的に、選択したトリムに適用できるmodel_year idの配列を取得し、ランダムなものを選択し、そのidを車両のmodel_year_idとして使用したいと考えています。
私が抱えている問題は、trim.model_years.all(:select => :id).collect(&:id)
パーツがあいまいであるというエラーを生成していることです。エラーは次のとおりです。
SQLite3::SQLException: ambiguous column name: id: SELECT id FROM "model_years" INNER JOIN "model_year_trims" ON "model_years"."id" = "model_year_trims"."model_year_id" WHERE "model_year_trims"."trim_id" = 110
ID を選択すると model_year の ID が取得され、あいまいにならないようにコードを再フォーマットするにはどうすればよいですか?