在活动记录的日期属性中添加日期

时间:2018-11-20 21:21:50

标签: ruby-on-rails ruby rails-activerecord

我试图在数据库中为每位患者添加出生日期,并且在为每位患者的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')),但仍然遇到相同的错误。

1 个答案:

答案 0 :(得分:2)

您有两个问题:

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

first finder method如下:

  

第一(限制=无)
  查找第一条记录(如果提供了参数,则查找第一条N记录)。如果未定义顺序,它将通过主键进行排序。

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

为避免日期不明确,应在应用程序内部使用Date对象或ISO-8601格式的字符串(即YYYY-MM-DD),并在边缘保留所谓的“人性化”格式

你想说:

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