例如,用户可以是admin
和player
,我希望用户设置主要角色。例如,我可以是player
,然后稍后再切换为admin
。
显而易见的是在main_role
模型上附加role_id
和User
。
但是,我担心我必须让主角色与用户拥有的角色保持同步。例如,如果用户不再是玩家,则她的main_role
不能是玩家的。{/ p>
我想的另一种方式是订购第一个将成为主要角色的角色。我找不到一个简单的方法来做到这一点。
Ex: user.roles.map(&:name) => ["admin", "player"]
在这种情况下,主要角色是“管理员”,如果我希望主要角色是玩家,我可以将“玩家”交换为第一。
有没有人对此有任何好的建议?
谢谢!
答案 0 :(得分:0)
我最好称之为" current_role"。
更改角色列表时,不要害怕检查当前角色。
如果用户失去了他的current_role角色,那么将current_role从他的列表中更改为下一个。
是的,我建议使用带有外键的role_id的current_role,用户表中的ON DELETE RESTRICT,ON UPDATE CASCADE。
如果您使用postgres以外的其他内容,请使用rails的db一致性检查。