我们有Role
模型通过User
与role_id
相关联,并且有些用户没有分配角色。
如果用户未明确拥有角色集,则需要设置默认Role
。没有在迁移中设置默认值。
尝试使用循环:
users.each do |user|
# some users don't have roles so there are errors
end
角色模型:
class Role < ActiveRecord::Base
has_many :users
# Can I add something to set the default role
end
用户模型:
class User < ActiveRecord::Base
belongs_to :role
end
此外,如果这不是一个解决这个问题的方法,那么任何建议都会受到赞赏。
答案 0 :(得分:1)
您可以将初始化方法添加到用户模型
after_initialize :init
def init
self.role =>'my_default_role'
end
答案 1 :(得分:1)
在循环中执行与角色相关的操作之前,您还可以对user.role_id
进行简单检查。
users.each do |user|
user.role = Role.find_by(name: 'user') unless user.role
end
或者,您可以修改用户类中的role
方法,以便在未定义时添加默认方法。
class User < ActiveRecord::Base
belongs_to :role
def role
return :role if :role
Role.find_by(name: 'user')
end
end
最后,您可以创建一个迁移,将角色添加到没有角色的所有用户。