如何为给定的父ID创建嵌套对象?

士兵

让我们有一个称为的父对象Parent一个名为的嵌套对象Kid

parent.rb:

class Parent < ApplicationRecord
    has_many :kids, dependent: :delete_all
end

kid.rb:

class Kid < ApplicationRecord
  belongs_to :parent
end

我有一个ID为5的父对象,我想为其创建一个Kid对象。

明确指定其父对象ID时,ruby表达式的外观如何?首先想到的以下表达式不起作用:

5.kids.create(Name: "John)
天空

您有2种方法

更快但不太安全的方法

Kid.create(parent_id: 5, name: "John")

如果parent数据库中没有id = 5,这将引发错误

较慢但更安全的方法

Parent.find_by(id: 5)&.kids&.create(name: "John")

这将执行2条SQL语句,获取父级(id = 5),然后插入一个孩子。

如果找不到父母,则不会创建孩子。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章