2016-07-29 121 views
0

节省的has_many关联我有一个Rails应用程序设置如下:导轨BUILD方法不是通过

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 
在控制台

然后(Englishified为简单起见):

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

在将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 ] 
+0

@drakken,试过这种? – Sravan

+0

这是行不通的,这是一个我非常乐意使用的解决方案,但我仍然很好奇为什么在用户上使用构建方法保存项目不会形成关联,如果有关于该方面的信息你可能会链接到我,我会有兴趣了解更多。无论如何,感谢您的帮助! –