【问题标题】:Rails BUILD method not saving association on has_many throughRails BUILD 方法没有通过 has_many 保存关联
【发布时间】:2016-12-04 18:25:15
【问题描述】:

我有一个 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 ),一切正常,但这不是我需要的。

我做错了什么?

【问题讨论】:

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


    【解决方案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 ]
    

    【讨论】:

    • 这确实有效,这是我非常乐意使用的解决方案,但我仍然很好奇为什么使用用户的 build 方法保存项目不会产生关联,如果有关于这方面的信息,您可以链接到我,我有兴趣了解更多。不管怎样,谢谢你的帮助!!
    猜你喜欢
    • 2016-08-24
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 2011-12-04
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多