Rails 4:用户兴趣关系的最佳架构

时间:2015-02-21 14:27:28

标签: ruby-on-rails database model schema relationship

我是rails的新手,并试图充分利用模型之间可以指定的关系。这不是一个编码问题,而是一个设计问题。我正在寻找关于在我的Rails应用程序中建立模型关系的最佳方法的特定问题的一些指导。

这是一个直截了当(常见)的问题:

我有一个模特用户 我也有模特兴趣 用户会有很多兴趣和兴趣会有很多用户, 因此我创建了一个模型UserInterest来捕获这种关系,只需将user_id和interest_id作为表中的列。

我的第一个问题是:这是最好的方法吗?或者,我可以在User表中拥有列兴趣,并在其中放入一个interest_id数组。但是,在某些时候我想根据兴趣搜索用户,所以有一个联接表似乎是一个更好的方法。

第二个问题涉及创建和更新用户兴趣。如果使用上面的设置,那么每次用户在users_interests表中更新他的兴趣时,必须删除该用户的所有当前条目并创建一个新集 - 这看起来很麻烦且必定是错误的。

2 个答案:

答案 0 :(得分:2)

class User < ActiveRecord::Base
 has_many :user_intrests
 has_many :intrests, through: :user_intrests
end

class UserIntrest < ActiveRecord::Base
 belongs_to :user
 belongs_to :intrest
end

class Intrest < ActiveRecord::Base
 has_many :user_intrests
 has_many :users, through: :user_intrests
end

您还可以向http://guides.rubyonrails.org/association_basics.html

学习

答案 1 :(得分:1)

对于您遇到的问题,您的has_many through approach是最好的。我不会使用UserInterest作为模型名称。但这只是一个品味问题。