ActiveRecord的。创建联合表链接。最短路

时间:2015-11-13 17:50:49

标签: ruby-on-rails activerecord

因此,我在向用户添加角色时尝试获取oneliner。我使用多对多的关系,我的联合表称为UserRoles。

最短的方法是什么?

我最好的解决方案是:

user.user_roles << UserRole.create(role_id: 1)

我遇到的问题是,我必须依赖role_id。我希望通过字符串找到它,所以在代码中很清楚它是什么角色。

2 个答案:

答案 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