【发布时间】:2015-07-31 13:22:44
【问题描述】:
User 和Organization 通过Relationship 具有多对多关联。
Relationship 模型指定User 是否是Organization 的成员(member 布尔值)。
如果需要创建一个新的Organization 以及一个与该Organization 相关的新User,我目前执行以下操作:
Organization.create!(name: "name", ...).users.create(email: "email@email.com",...)
但是,这还没有将Relationship 模型中的member 布尔值设置为true。
有没有办法在上面的命令中包含这个?或者这是否只能与创建 user 和 organization 记录分开?因为那样的话它需要相对大量的代码,并且在前面的create 行之后添加似乎有点低效:
@user = User.find_by(username: username)
@organization = Organization.find_by(name: name)
@relationship = @organization.relationships.find(@user)
@relationship.update_attributes(member: true)
【问题讨论】:
-
但是你为什么需要这个布尔值呢?如果
user有一个relationship和organization,那么他已经是会员了,不是吗? -
不一定,在我的用例中,用户可能只是组织的版主而不是成员。
-
所以在这种情况下,您需要手动设置该布尔值或为其设置默认值。
-
“手动设置”是指我现在的做法吗?不过,我想知道
Organization.create!行是否正确,同时考虑到我发布的问题here。 -
我会单独做,首先创建
organization,然后我会实例化一个new用户并将其添加到organization,如下所示:organization.users << User.new(email: "asd@asd.com", member: true)
标签: ruby-on-rails ruby ruby-on-rails-4 associations