【问题标题】:Implementing user roles and their unique columns实施用户角色及其独特的列
【发布时间】:2015-01-21 04:25:12
【问题描述】:

我正在创建一个应用程序,其中有 3 种不同类型的用户。每个用户类型将只有 2-3 个相同的列和 4-5 个对该用户类型唯一的列。

用户类型示例:

Admin
Coach
Player

我最初的方法是创建带有 admin, coach, player 列的 User 表。这些列是定义用户是否具有特定角色的布尔值。管理员会将admin 设置为true 并将所有其他列设置为false。

如果我们所有的用户都有相同的列,如用户名、密码等,这很好用。当我们引入某些用户类型独有的其他列时,就会出现问题。假设所有玩家都需要有地址。我们有这些用于用户表的列:

id
username
password
admin
coach
player
city
address
apartment
zip
etc...

对于玩家,这些列将被填充,但对于管理员和教练,这些值为空。

我的第二个想法是为User 表留下所有用户类型共有的值:

id
username
password
admin
coach
player

然后创建仅针对特定用户类型填充的新表:

class AdminProperties < ActiveRecord::Base
    belongs_to :users
end

class CoachProperties < ActiveRecord::Base
    belongs_to :users
end

class PlayerProperties < ActiveRecord::Base
    belongs_to :users
end

为具有多个用户角色和特定用户独有的列的此类应用程序建模的最佳做法是什么?谢谢。

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord


【解决方案1】:

我建议采用第二种方法,将 user 提取到不同的表中,然后关联每个 admincoach玩家和他们一起。

class User < ActiveRecord::Base
  ...
end

class Coach < ActiveRecord::Base
  belongs_to :user
  ...
end

它不仅有助于保持代码 DRY,还可以让您灵活地修改子表。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 2016-12-26
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多