首页 > 解决方案 > 将日期添加到活动记录中的日期属性

问题描述

我正在尝试为我的数据库中的每位患者添加出生日期,并且dob在为每位患者的属性添加日期时遇到问题。当我添加前。Patient.first(dob: "01/25/1990")我得到一个错误阅读no implicit conversion of Integer into Hash。关于我将如何做到这一点的任何想法?

 create_table "patients", force: :cascade do |t|
    t.string "first_name"
    t.string "last_name"
    t.integer "age"
    t.date "dob"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

当我为我的数据库播种时,我的dob领域是nil

我也尝试过Patient.first(dob: Date.parse('31-12-2010')),仍然得到同样的错误。

标签: ruby-on-railsrubyrails-activerecord

解决方案


你有两个问题:

  1. first不接受查询参数。
  2. 您的日期格式不明确。

firstfinder 方法如下所示:

first(limit = nil)
查找第一条记录(N如果提供了参数,则查找第一条记录)。如果没有定义顺序,它将按主键排序。

您想find_by用作.where(...).first快捷方式。

并且为了避免您的日期出现歧义,您应该Date在应用程序中使用对象或 ISO-8601 格式的字符串(即 YYYY-MM-DD),并为边缘保留所谓的“人类友好”格式。

你想说:

Patient.find_by(dob: '1990-01-25')

推荐阅读