2015-06-03 40 views
2

我有兩個表按照圖。如何獲得加入或包含在軌道中的兩個表的結果

我想編寫一個查詢,讓我所有的用戶與他們的關聯關係。在關係表中的用戶ID現在是user_id

我已經試過

Relationship.includes(:User) 

但這只是給我的關係表的結果,以及

Relationship.joins(:User) 

它做同樣的

enter image description here

在這兩個表中都有記錄,正如您從軌道圖中可以看到的那樣,關聯設置正確。這是什麼正確的語法?

+0

你嘗試過這種'User.joins(「INNER JOIN ON users.id = relationships.userid關係」)' –

+0

我相信你問的是一個結果集的列來自兩個表,正確?我有一天面臨同樣的挑戰,但無法找到一個好的解決方案,而不訴諸普通的SQL。我熱切地監控這個線程,看看你是否得到了很好的迴應。 – Agazoom

+0

@Amit Sharma這隻給我的用戶表,而作爲Agazoom說,我試圖讓這兩個 –

回答

2

你可以試試這個。

User.joins("INNER JOIN relationships ON users.id = relationships.userid").select("users.id, users.name, relationships.useeid, relationships.followsid") 

OR

User.joins("INNER JOIN relationships ON users.id = relationships.userid").select("users.*, relationships.*") 

將結果轉換成JSON,你可以嘗試以下。

result = User.joins("INNER JOIN relationships ON users.id = relationships.userid").select("users.*, relationships.*") 

result = result.to_json 
0

如果你想急於負荷用戶與他們的realtionships,您可以使用類似:

user.rb

has_many :relationships 

relationship.rb

belongs_to :user 

如何使用它。

User.includes(:relationships) 

編輯

爲@ user123建議您可以通過

User.eager_load(:relationships) 
+0

我目前在rails控制檯上運行這個。當我運行User.includes(:relationship)和User.includes(:relationships)時,我得到SQL SELECT「users」。* FROM「users」,但它告訴我沒有找到ActiveRecord :: AssociationNotFoundError:Association'association'用戶;也許你拼錯了嗎? –

+0

'User'和'Relationship'模型之間的關係是什麼? – DevMarwen

+0

按照這個圖,它是一個用戶對多個關係 –

1

強制立即加載根據圖中,你需要使用如下的關聯:

User.rb

has_many :relationships 

Relationship.rb

belongs_to :user 

您可以通過使用

User.eager_load(:relationships).select('users.* , relationships.*') 

它會選擇這兩個表中的記錄進行訪問。

+0

這給了我一個新的提示,但單引號和沒有記錄 –

+0

檢查更新代碼 –

相關問題