如果用户有多个角色
has_many :roles
且角色属于用户
belongs_to :user
那么为什么
role.user ||= User.create(name: "moeabdol")
不构建用户和角色之间的关联
irb> role
user_id: 1
type: "admin"
irb> role.user
id: 1
name: "moeabdol"
现在这个
irb> me = role.user
irb> me.roles
[]
返回一个空数组!
这是预期的行为吗?如果是这样,那么我如何构建关联,因为我必须在用户之前创建角色?
答案 0 :(得分:1)
role.user ||= User.create(name: "moeabdol")
只会创建一个新用户并分配给内存对象,但你的角色对象在user_id中仍然有一个nil值
您需要的是:
role.user ||= role.create_user(name: "moeabdol")
create_user是belongs_to关联方法之一(查找create_association(attributes = {})here)