[{:name=>"My User"}]} 现在我运行以下命令: -6ren">
gpt4 book ai didi

ruby-on-rails - 嵌套属性首先保存父级

转载 作者:行者123 更新时间:2023-12-02 04:40:57 24 4
gpt4 key购买 nike

我有 2 个模型。 用户公司

公司

class Company < ActiveRecord::Base

has_many :users, dependent: :destroy

validates :name,
presence: true,
uniqueness: true

accepts_nested_attributes_for :users
end

用户

class User < ActiveRecord::Base
belongs_to :company

validates :name,
presence: true

validates :company,
presence: true

end

我得到了一个哈希:

{:name=>"My Company", :users_attributes=>[{:name=>"My User"}]}

现在我运行以下命令:

params = {:name=>"My Company", :users_attributes=>[{:name=>"My User"}]}
company = Company.new params
company.save

行为符合我的预期。 company 无法保存,因为 User 无效(验证:validates :company, presence: true)

为此,我每次都使用一个关注类来执行以下操作:

  • 创建公司
  • 为该公司创建用户

所以我的问题是:

是否可以在不使用关注类的情况下先保存父项,然后在有效时将子项保存为第二部分?对于这种情况是否存在像“accepts_nested_attributes_and_save_first_parent_for”这样的 rails 方式?

最佳答案

你可以尝试以下操作吗:

class Company < ActiveRecord::Base

has_many :users, dependent: :destroy, :inverse_of => :company
...
end

引用:

  1. How can you validate the presence of a belongs to association with Rails?
  2. Rails: Validating association after save?

关于ruby-on-rails - 嵌套属性首先保存父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37638854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com