User
和Organization
通过Relationship
进行多对多关联。
Relationship
模型除其他外,指定User
是否是Organization
(member
布尔值)的成员。
如果需要创建新的Organization
以及与User
相关的新Organization
,我目前会执行以下操作:
Organization.create!(name: "name", ...).users.create(email: "email@email.com",...)
但是,这还没有将member
模型中的Relationship
布尔值设置为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)
答案 0 :(得分:1)
如果拆分创建行,则可以避免使用某些find
方法:
org = Organization.create!(name: "name", ...)
user = org.users.create(email: "email@email.com", ...)
Relationship.find_by(organization_id: org, user_id: user).update_attributes(member: true)
我试图看看是否有一种简单的方法可以使用accepts_nested_attributes_for
来实现这一点,但在这种情况下,看起来这种方法会更复杂。
此链接描述了设置类似的内容,但它与many-to-one
关系:https://stackoverflow.com/a/25941676/3993528