因此,我在向用户添加角色时尝试获取oneliner。我使用多对多的关系,我的联合表称为UserRoles。
最短的方法是什么?
我最好的解决方案是:
user.user_roles << UserRole.create(role_id: 1)
我遇到的问题是,我必须依赖role_id
。我希望通过字符串找到它,所以在代码中很清楚它是什么角色。
答案 0 :(得分:0)
user.user_roles.create(role_id: 1)
将是创建角色的更简洁方式。
如果要使用角色字符串,可以在模型中使用可以引用的常量。但是,您应该为模型添加role
属性。
class UserRoles
ROLES = ['A', 'B']
validates_inclusion_of :role, in: ROLES
end
validates_inclusion_of
将在创建对象之前验证您是否具有允许的角色。
答案 1 :(得分:0)
我正在玩它并决定使用以下内容:
user.user_roles << Role.find_by(role: 'registered').user_roles.create