如何在Rails中创建属于多个用户的资源

时间:2018-04-14 21:42:28

标签: ruby-on-rails activerecord

我正在设置一个包含用户和品牌的应用。大多数用户不会与品牌相关联,只能对品牌页面发表评论。但是,有些用户会与一个品牌相关联。我希望这些用户成为"管理员"或该品牌的所有者。例如。用户A和B都是"管理员"一个品牌,所以可以创建/编辑/更新品牌等。我的问题是,我应该如何设置品牌资源,使其" belongs_to"多个用户?我知道我可以说品牌有很多用户,但说对象"有#34;一个用户?是否更适合"属于"给用户? This description让我相信:"例如,说供应商拥有的帐户比拥有供应商的帐户更有意义。"

1 个答案:

答案 0 :(得分:2)

这绝对是has_many关系。

但将这些特殊用户称为“管理员”可能会更清楚。或者'管理员'

class Brand
  has_many :administrators, class_name: 'User'
end

如果事实证明用户可以成为多个品牌的管理员,那么您需要一个连接表,HABTM或HMT。如果您想存储关于联接的特征(例如,当他成为管理员时),HMT是更好的选择

class BrandUser
  belongs_to :user
  belongs_to :brand
end

class Brand
  has_many :brand_users
  has_many :administrators, through: :brand_users, source: :user
end

class User
  has_many :brand_users
  has_many :brands, through: :brand_users
end