Rails BUILD方法不保存has_many中的关联

时间:2016-07-29 23:40:02

标签: ruby-on-rails activerecord many-to-many has-many-through

我有一个Rails应用程序设置如下:

rails g model User name, password, etc....
rails g model Project title, description, etc....
rails g model Contract user:belongs_to project:belongs_to

rake db:migrate

然后在控制台中(简化为英文):

User.create!( params )
x = User.first.projects.build( params )
x.save
User.first.projects.to_a
[]
Project.first
[ project shows ]

保存时的关联不起作用。如果我直接使用User.first.projects.create( params ),一切正常,但这不是我需要的。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

在为用户构建User后,您应该保存project对象,而不是项目对象

如果您在构建后保存project对象,则只会创建Project,但如果您保存User对象,project将被分配到User

User.create!( params )

user = User.first

project = user.projects.build( params )

user.save

现在,您可以查看,

User.first.projects.to_a

[ project shows ]

Project.first

[ project shows ]