如何在团队,用户和组织之间将我的模型与rails相关联?

时间:2018-04-24 15:55:32

标签: ruby-on-rails ruby activerecord

我正在做一个rails项目,它允许多个用户成为组织的一部分(用户只属于一个组织)。组织有多个团队,用户也可以属于多个团队。此外,组织部分还做了其他类似的协会。

class User < ApplicationRecord
   has_and_belongs_to_many :teams
end 

class Team < ApplicationRecord
   has_and_belongs_to_many :users
end

我对添加组织关联的想法是这样的。

class User < ApplicationRecord
  has_and_belongs_to_many :teams
  belongs_to :organization
end

class Organization < ApplicationRecord
  has_many :users
  has_many :teams
end

class Team < ApplicationRecord
  has_and_belongs_to_many :users
  belongs_to :organization
end

还有其他方法,以便我可以添加对未来目的有帮助的组织模型吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我建议使用has_and_belongs_to_many关系来支持has_many through:,这样您就可以更灵活地使用Organization模型。

这样的事情:

class User < ApplicationRecord
  has_many :organizations
  has_many :teams, through: :organizations
end
class Team < ApplicationRecord
  has_many :organizations
  has_many :users, through: :organizations
end
class Organization < ApplicationRecord
  belongs_to :users
  belongs_to :teams
end

通过这种方式,您可以在三个模型之间清晰地定义关联,而不使用has_and_belongs_to_many的Rails魔法。这允许您使用Organization模型。