ruby-on-rails - 如何为给定的父 ID 创建嵌套对象?
问题描述
让我们有一个名为的父对象和一个名为 的Parent
嵌套对象Kid
。
父.rb:
class Parent < ApplicationRecord
has_many :kids, dependent: :delete_all
end
孩子.rb:
class Kid < ApplicationRecord
belongs_to :parent
end
我有一个id 为 5的父对象,我想为其创建一个Kid
对象。
当明确指定其父对象 ID 时,ruby 表达式会是什么样子?起初我想到的以下表达式不起作用:
5.kids.create(Name: "John)
解决方案
你有两种方法可以做到这一点
更快但不太安全的方法
Kid.create(parent_id: 5, name: "John")
parent
如果数据库中没有 id = 5 ,这将引发错误。
较慢但更安全的方法
Parent.find_by(id: 5)&.kids&.create(name: "John")
这将执行 2 个 SQL 语句,获取父级 (id = 5),并插入一个孩子。
如果找不到父级,则不会创建子级。
推荐阅读
- mysql - 仅在某些条件下如何进行 GROUP BY 和 SUM?
- android - 在 android ndk 中使用 ubuntu 头文件库
- angularjs - 如何在 grunt 任务中将 ngAnnotate 替换为 babel-plugin-angularjs-annotate
- javascript - 特殊字符被添加到反应表空行中
- c# - 如何使用 C# 和 Visual Studio 将带有 ID3 标签的音频文件上传到应用程序中
- python - 你怎么知道广播消息来自哪个接口?
- python - python中的扩展切片如何工作?
- typescript - 使用 react-scripts-ts 声明要在不同文件中使用的 const 枚举
- c# - MSAL,推荐去新版2.0.0预览
- phaser-framework - Phaser 中的状态管理