以下の find メソッドはすべてのレコードを返しますが、venues テーブルの列は含まれません。以下を変更して会場の列を含める方法はありますか? :select => 'venues.id'
、およびを試してみましたが、:select => 'venues.*'
役に立ちませんでした。おそらく、これは rails find メソッドの制限です。クエリを「Item.where」のように書き直して、すべての列を含めることはできますか?
@vehicles = Vehicle.find(:all,
:select => '*',
:joins => [:vehicle_status, :category, :user],
:include => [:venue],
:conditions => ["vehicles.client_id = ? ", current_user.client_id]
)
Rails 3.2.11 を使用しています。
また、:select => 'vehicles.*, venues.*'
コンソールで次のクエリを使用して取得すると、会場フィールドが選択されていることが示されますが、返された json には表示されません。
SELECT "vehicles"."id" AS t0_r0, ... "vehicles"."created_at" AS t0_r33,
"vehicles"."updated_at" AS t0_r34, "venues"."id" AS t1_r0, "venues"."client_id" AS t1_r1,
"venues"."venue_name" AS t1_r2, "venues"."created_at" AS t1_r3, "venues"."updated_at" AS t1_r4
FROM "vehicles" INNER JOIN "vehicle_statuses" ON "vehicle_statuses"."vehicle_status_code" =
"vehicles"."status_code" INNER JOIN "categories" ON "categories"."id" =
"vehicles"."category_id" INNER JOIN "users" ON "users"."id" = "vehicles"."created_at_user_id"
LEFT OUTER JOIN "venues" ON "venues"."id" = "vehicles"."venue_id" WHERE (vehicles.client_id =
500 )
ただし、 を使用する:select => '*'
と、コンソールには 2 つのクエリが表示されます。1 つは車両テーブル用、もう 1 つは会場用です。 )