2016-03-29 62 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