我是rails的新手,并试图充分利用模型之间可以指定的关系。这不是一个编码问题,而是一个设计问题。我正在寻找关于在我的Rails应用程序中建立模型关系的最佳方法的特定问题的一些指导。
这是一个直截了当(常见)的问题:
我有一个模特用户 我也有模特兴趣 用户会有很多兴趣和兴趣会有很多用户, 因此我创建了一个模型UserInterest来捕获这种关系,只需将user_id和interest_id作为表中的列。
我的第一个问题是:这是最好的方法吗?或者,我可以在User表中拥有列兴趣,并在其中放入一个interest_id数组。但是,在某些时候我想根据兴趣搜索用户,所以有一个联接表似乎是一个更好的方法。
第二个问题涉及创建和更新用户兴趣。如果使用上面的设置,那么每次用户在users_interests表中更新他的兴趣时,必须删除该用户的所有当前条目并创建一个新集 - 这看起来很麻烦且必定是错误的。
答案 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
学习
答案 1 :(得分:1)
对于您遇到的问题,您的has_many through
approach是最好的。我不会使用UserInterest
作为模型名称。但这只是一个品味问题。