我有一个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
表从我做的关联。
方法铌。 3
难道它使用范围的Rails 3色器件,CURRENT_USER是不是在模型访问?
不知道,哪种方式是最好的...