与用户和组织的ActiveRecord关系模型

时间:2016-07-30 20:12:25

标签: ruby-on-rails activerecord

我试图找出模型之间建模关系的最佳逻辑方法。 我有4个型号:

  1. 用户
  2. 产品
  3. SlackTeam
  4. 组织
  5. 此处用户拥有许多产品,SlackTeams和组织,而SlackTeam属于User并且有一个组织。组织应属于User和SlackTeam。我在逻辑上是否正确?

    工作流程如下:

    • 用户可以使用SlackTeam(自动创建组织)登录
    • 来自同一懒散团队的其他用户在将他们的帐户与Slack链接后将被添加到同一个组织
    • 如果用户连接到许多SlackTeams(和组织),他们可以过滤以查看他们所属的所有组织中的产品或仅来自一个

    我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

class User
  has_many :users_ogranizations
  has_many :organizations, through: :users_organizations
  has_many :products, through: :organizations
end

class Product
  belongs_to :organization
end

class Organization
  has_many :users_ogranizations
  has_many :users, through: :users_organizations
  has_many :products
end

class UsersOrganization
  belongs_to :user
  belongs_to :organization
end

# i'd rather use slack profile than team, because Organization and Team 
# already connotes the same thing.
class SlackProfile

end

您可以随意处理用户的登录,但我更喜欢一种身份验证服务。现在,用户可以访问属于该组织的所有产品,然后您可以使用以下内容过滤产品:

current_user.products.where(organization: Organization.last)