2016-03-29 3 views
0

アクティブなレコードクエリを使用する次のSQLクエリを実行するにはどうすればよいですか?アクティブなレコードクエリを使用してこの生のSQLクエリを実行する方法?

sql = "select * from events 
inner join places on events.place_id = places.id 
inner join users on events.user_id = users.id" 
where events.id = #{event_id} 

私は

Event.joins(:user, :place).includes(:user, place).find(event_id) 

を試してみたこれはほとんど私がしかしを選択*。イベントを選択していない何をしたいん。

が、私はその後、

Event.joins(:user, :place).select('*.*') 

これを試してみましたがActiveRelationオブジェクトを返し、私はこのうち私の結果を取得するかどうかはわかりません。

私も

Event.joins(:user, :place).find(event_id) 

を試してみたし、これはエラーをスローします。

ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near "." 

他に何を試していいですか。私がしようとしていることはできないのですか?

+1

アクティブな関連オブジェクトは、必要なものです。 'all'または' each'や 'to_a'(配列に変換する)のようなクエリを実行するメソッドを呼び出してください。 –

答えて

0
Event.joins(:user, :place).where("events.id = ?", event_id).select("events.*, users.*, places.*") 
+0

これはイベント。*を返します。生のSQLクエリ私は再作成しようとしています。私は、単一のクエリだけでなく、結合テーブルからすべてのフィールドを返すクエリをしたい。 – Riina

+0

私は自分の答えを変更しました – archana

+0

ありがとうございます。しかし、返された結果からどのようにして結合されたテーブルにアクセスするのですか?それはちょうどイベントを返すようだ、私は結合された列のいずれも表示されません。 生のsqlクエリは、返された各結果のすべての結合列を含むハッシュの一覧を返します。これは、指定したアクティブなレコードのクエリ結果に、同等のデータがどこにあるかわかりません。 – Riina

関連する問題