【问题标题】:How can I get ids of nested created records in Rails?如何在 Rails 中获取嵌套创建记录的 ID?
【发布时间】:2021-04-01 15:26:43
【问题描述】:

我有一个accepts_nested_attributes_for 的记录,创建后我想获取创建的记录的 ID 和属性无需进行其他查询。有可能吗?

比如我有这样的记录:

class Product
  has_many :variants
  accepts_nested_attributes_for :variants
end

那我可以做:

product = Product.create!(name: 'test_product', variants_attributes: [{ name: 'test_variant' }])

但如果我调用product.variants,它会再次查询数据库。

【问题讨论】:

  • 我不喜欢accepts_nested_attributes_for,理解起来不友好,也很难使用。算了,换个方法吧

标签: ruby-on-rails activerecord activemodel


【解决方案1】:

你的班级不应该是这样的吗:

class Product
  has_many :variants
  accepts_nested_attributes_for :variants
end

如果没有正确定义accepts_nested_attributes_for,我不确定您的代码是如何工作的。如果您已将创建的对象保存在变量 product 中,product.variants 命令不应触发另一个查询。

【讨论】:

  • 抱歉,我在定义 accepts_nested_attributes_for 时打错了字,我刚刚编辑了它。 product.variants 确实会触发另一个查询,只需按照我在问题中解释的方式尝试即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2011-09-09
相关资源
最近更新 更多