我有一個Users list
,在這裏我需要把follow/unfollow
按鈕,每個用戶在我參與的簽名。用戶列出與後續/取消關注按鈕
會有一些其他地方,我想使用相同的方法關注主題/組等。所以我認爲最好是寫一個關聯以避免每次需要這些按鈕時進行額外的查詢。
我user_followings
表結構
| id | user_id | recipient_id |
| 1 | 1 | 2 |
| 2 | 3 | 2 |
| 3 | 10 | 3 |
所以這裏使用id = 1用戶按照用戶=> 2 ...
所以bassicaly有has_many
關聯類型,因爲用戶是繼許多其他用戶。但是我想出了一個想法,即添加has_one
關聯類型,在那裏我將提供一個附加條件recipient_id=current_user.id
,這樣只剩下一條記錄,並顯示以下狀態。
如果我成功使這個association
,將有超級容易通過user.following.nil?
鑑於檢查以下狀態,沒有額外的查詢,緩存等
我在CakePHP的應用程序,一旦之前作出這樣,SQL查詢看起來像:
ON (`UserFollowing`.`recipient_id` = `User`.`id` AND `UserFollowing`.`user_id` = 1)
但CakePHP的允許綁定在飛行的關係,所以我加了current_user.id直接從會話的關聯情況。
我不能在Rails的做到這一點,因爲我不能把current_user.id
模型來描述條件:
user.rb
has_one :following, :class_name => 'UserFollowing', :conditions => {:user_id => current_user.id}
方法鈮。 2
也許我可以使用:through
來解決這個問題,但是我找不到任何例子來從我從中進行關聯的同一個users
表中獲得結果。
方法Nb。 3
使用範圍Rails 3 devise, current_user is not accessible in a Model ?
不知道,哪種方式是最好的...
嘗試':條件=> {:recipient_id => CURRENT_USER .id}' – HungryCoder 2013-03-26 10:12:57
對不起,我用current_user.id拼寫錯了。我需要爲recipient_id提供收到的user.id。這不起作用:conditions => {:recipient_id => user.id} – Gediminas 2013-03-26 10:15:13
我認爲你想要「用戶。ID「,但老實說,我不明白什麼是問題 – riffraff 2013-03-26 11:17:19