在我的程序中,我有3个不同角色的用户模型。
所有用户的基本用户模型。
class User < ActiveRecord::Base
some validates and associations
具有角色==&#39; admin&#39;
的用户的管理员class Admin < User
def channels
Channel.all
end
end
开发者,适用于有角色的用户==&#39;开发人员
class Developer < User
has_many channels
end
我正在使用我的用户授权设计。当用户登录时,我希望特定的current_user成为用户角色的正确类的实例。
所以我可以使用user.channels获取不同的频道集合。
我可以设计吗?感谢
答案 0 :(得分:0)
您应该在users表中创建admin
和developer
列,或者如果您有更多角色,则创建单独的Roles表。您也可以使用方便的Rolify gem。
然后,您可以在用户对象上调用此方法:user.has_role?(:admin)
返回true或false。
答案 1 :(得分:0)
我几周前用Single Table Inheritance解决了这个问题。
我将type列添加到users表中。然后rails可以自动执行特定模型。
Admin和Developer都使用带有admin和developer.then类型的users表,当用户登录rails时,它将特定于其模型的正确实例。