无法访问Rails中的has_many关联

时间:2015-10-18 14:32:07

标签: ruby-on-rails ruby

如果用户有多个角色

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
[]

返回一个空数组!

这是预期的行为吗?如果是这样,那么我如何构建关联,因为我必须在用户之前创建角色?

1 个答案:

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