1

以下の 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 つは会場用です。 )

4

2 に答える 2