Rails BUILD 方法未通过 has_many 保存关联
Rails BUILD method not saving association on 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 )
一切正常,但这不是我需要的。
我做错了什么?
您应该在为用户构建 project
后保存 User
对象,而不是项目对象。
如果在构建后保存 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 ]
我有一个 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 )
一切正常,但这不是我需要的。
我做错了什么?
您应该在为用户构建 project
后保存 User
对象,而不是项目对象。
如果在构建后保存 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 ]