我有一个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 )
,一切正常,但这不是我需要的。
我做错了什么?
答案 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 ]