如何在rails中使用has_one关系而不分配外键

时间:2011-10-24 19:22:39

标签: ruby-on-rails

我正在考虑的情况如下。对于我网站中的每个用户,我想分配一个个人资料图片。所以我会使用以下代码   模型用户    has_one:profile_pic,:classname =>'pic'   结束   但我不想给每个pic对象一个外键user_id,因为许多图片根本不与用户相关联。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

在我看来,如果您不想存储用户的多张个人资料照片,并且每次更新照片时都会更新,则可以使用has_one关联。

另一方面,如果您打算存储用户上传的所有个人资料照片,那么您可能会制作用于存储用户个人资料照片的相册模型。使用

has_many :photos, :through => :albums

并向用户显示第一张图片。

答案 1 :(得分:1)

你可以做一个

class User
  belongs_to :profile_pic, :classname => 'Pic'
end

并在profile_pic_id表中添加users。有道理。

不要担心用户belonging_to张图片。它只表示密钥存储在此对象的表中,而不是存储在其他对象的表中。