Rails first_or_create ActiveRecord 方法

2024-02-12

什么是first_or_create / first_or_create!Rails 中的方法?

根据文档 http://apidock.com/rails/ActiveRecord/Relation/first_or_create, 方法 ”没有描述"...


来自Guides http://guides.rubyonrails.org/v3.2.13/active_record_querying.html#first_or_create

首先或创建

The first_or_create方法检查是否first返回零或不返回。如果它确实返回 nil,那么create叫做。当与where方法。让我们看一个例子。

假设你想找到一个名为“Andy”的客户端,如果没有,则创建一个,并将其锁定属性设置为 false。您可以通过运行以下命令来执行此操作:

Client.where(:first_name => 'Andy').first_or_create(:locked => false)
# => #<Client id: 1, first_name: "Andy", orders_count: 0, locked: false, created_at: "2011-08-30 06:09:27", updated_at: "2011-08-30 06:09:27">

该方法生成的 SQL 如下所示:

SELECT * FROM clients WHERE (clients.first_name = 'Andy') LIMIT 1
BEGIN
INSERT INTO clients (created_at, first_name, locked, orders_count, updated_at) VALUES ('2011-08-30 05:22:57', 'Andy', 0, NULL, '2011-08-30 05:22:57')
COMMIT

first_or_create返回已存在的记录或新记录。在我们的例子中,我们还没有名为 Andy 的客户,因此创建并返回记录。

首先或创建!

您还可以使用first_or_create!如果新记录无效则引发异常。本指南未涵盖验证,但我们暂时假设您临时添加

validates :orders_count, :presence => true

到您的客户端模型。如果您尝试在不传递orders_count的情况下创建新客户端,则记录将无效并引发异常:

Client.where(:first_name => 'Andy').first_or_create!(:locked => false)
# => ActiveRecord::RecordInvalid: Validation failed: Orders count can't be blank
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails first_or_create ActiveRecord 方法 的相关文章

随机推荐

  • 量角器需要密码才能登录 => 不安全?

    我开始使用 Protractor 进行 e2e 测试 要测试某些页面 我首先需要登录 现在我有这部分用于输入密码 var passInput element by id Passwd passInput sendKeys test 现在 当
  • 如何获取 eq() 值?

    这可能吗 为了让我得到eq 价值 例如 如果我单击li eq 2 var x会变成2 这是代码 numbers ul li click function x this eq val alert x The index what is thi
  • 从 Uri 转换位图返回 null [重复]

    这个问题在这里已经有答案了 在我的 Android 应用程序中 我使用 Google 驱动器来选择图像和文件 对于文件 我的代码在大多数情况下都运行良好 不幸的是 在某些情况下图像导入不起作用 图像位图返回空值 下面是我用来将内容 URI
  • 我们如何处理 BDD 场景的微小排列?

    我喜欢 BDD 开发方法 但我遇到了一个问题 即该方法能走多远 这条来自 ThoughtWorks 的最新评论Radar http thoughtworks fileburst com assets thoughtworks tech ra
  • 使用 Guice AOP 在 Jersey 中进行方法拦截

    是否可以使用 Guice AOP 拦截 Jersey 资源上的带注释的方法 我已经成功配置了 Guice 与 Jersey 的依赖注入集成 没有任何问题 但是我配置的拦截器根本没有拦截我带注释的方法 web xml
  • 在 Bootstrap 3 的弹出窗口中放置一个表单? [复制]

    这个问题在这里已经有答案了 如何在 Bootstrap 3 中的弹出窗口中放置表单 a href class btn btn lg btn danger title Click It a 它给出了如下效果 我想在它的体内放置一个形式 我们怎
  • Rails 与非 Rails 数据库设计

    完全新手研究 Rails Rails 是否可以与不符合 Rails 默认命名和设计约定的只读模式一起使用 例如 我的数据库架构具有使用字符串列作为唯一主键的基表 例如 名为 Jobs 的基表可能具有定义为 Jobs Job 的唯一主键 并且
  • IntelliJ Idea - 在调试器中搜索值

    我需要知道是否可以在 IntelliJ Idea 的调试器中搜索值 示例 您有一个巨大的对象树 您需要找到设置为相同特定值的字符串变量 有什么办法可以做到这一点吗 展开此树以便您可以看到所有这些字符串 然后开始输入您要搜索的内容 快速搜索应
  • 在嵌套片段中使用 OptionsMenu

    我使用在我的主机活动中实现的 NavigationDrawer 模式菜单活动 我的导航有 3 个项目 项目 1 项目 2 项目 3 每个项目都绑定到一个片段 当我单击 Item 1 时 我显示了一个片段 A 它实现了具有多个片段 嵌套片段
  • 访问抽象类 (Scala) 中构造函数创建的字段

    我有一个实现一种方法的抽象类 我如何访问参数internalValue 由抽象类构造函数设置 abstract class Value internalValue Int def equal v Value Boolean def notE
  • 如何查询以二进制形式存储在数据库中的 UUID(JPA/Hibernate/MySQL)

    我有一个基于 Java JPA Hibernate MySQL 的应用程序 我想使用 UUID 进行对象标识 但我想确保数据库性能不会受到影响 我发现了这篇很棒的博客文章JPA 和 UUID 主键 http www thebinaryidi
  • 如何在ag-grid中动态设置行高和列宽

    我已经使用它来尝试适应列和行的宽度 如何在ag grid中动态设置行高和列宽 请在typescript中提供git hub代码 我假设您想根据行的内容设置行高 步骤 1 将 getRowHeight 属性设置为 JavaScript 函数
  • 在编译时强制存在无参构造函数 (Java)

    我有一堂课有点像这样 public class Test private final List
  • 即使在应用程序中设置核心,Spark UI 也显示 0 核心

    我在运行 Spark Master url 之外的应用程序时遇到了一个奇怪的问题 其中 UI 无限期地报告 等待 的 状态 因为无论我将核心计数配置为什么 正在运行的应用程序 表下都会显示 0 个核心是 我已经使用以下设置配置了我的应用程序
  • 获取 macOS 上当前用户的桌面路径

    I use NSArray paths NSSearchPathForDirectoriesInDomains NSDesktopDirectory NSUserDomainMask YES NSString theDesktopPath
  • Maven Jetty 垃圾邮件警告“从多个位置扫描”

    我发现了类似的问题here https stackoverflow com questions 50190689 maven scanned from multiple locations type of warnings 但它指向一个我没
  • 如何暂时禁用 Coq 中的符号

    当您熟悉项目时 符号很方便 但当您刚刚开始使用代码库时 符号可能会令人困惑 我知道你可以用白话关闭所有符号Set Printing All 但是 我想保留一些打印 例如隐式参数 全部打印如下 Require Import Utf8 core
  • 热切加载:在具有雄辩关系的枢轴上使用“with”

    有4张表 bundles 身份证号 姓名 products 身份证号 姓名 prices 身份证号 姓名 bundle product id bundle id product id price id 有3种型号 Bundle Produc
  • 核心数据结构是否使用多个实体?

    我有一个核心数据模型 我正在尝试弄清楚如何构建它 可以说我有一个Recipe 它有一个name title image和 5 种成分 我可以制作一个食谱实体吗recipeName title 然后一个Image实体与recipeName i
  • Rails first_or_create ActiveRecord 方法

    什么是first or create first or create Rails 中的方法 根据文档 http apidock com rails ActiveRecord Relation first or create 方法 没有描述