我试图在数据库中为每位患者添加出生日期,并且在为每位患者的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'))
,但仍然遇到相同的错误。
答案 0 :(得分:2)
您有两个问题:
first
不接受查询参数。第一(限制=无)
查找第一条记录(如果提供了参数,则查找第一条N
记录)。如果未定义顺序,它将通过主键进行排序。
您想使用find_by
作为.where(...).first
的快捷方式。
为避免日期不明确,应在应用程序内部使用Date
对象或ISO-8601格式的字符串(即YYYY-MM-DD),并在边缘保留所谓的“人性化”格式
你想说:
Patient.find_by(dob: '1990-01-25')