ruby-on-rails - 将日期添加到活动记录中的日期属性
问题描述
我正在尝试为我的数据库中的每位患者添加出生日期,并且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'))
,仍然得到同样的错误。
解决方案
你有两个问题:
first
不接受查询参数。- 您的日期格式不明确。
first
finder 方法如下所示:
first(limit = nil)
查找第一条记录(N
如果提供了参数,则查找第一条记录)。如果没有定义顺序,它将按主键排序。
您想find_by
用作.where(...).first
快捷方式。
并且为了避免您的日期出现歧义,您应该Date
在应用程序中使用对象或 ISO-8601 格式的字符串(即 YYYY-MM-DD),并为边缘保留所谓的“人类友好”格式。
你想说:
Patient.find_by(dob: '1990-01-25')
推荐阅读
- python - 用简单的形式烧瓶 BadRequest
- python - 如何从 numpy 中的数组中删除数组?
- list - 根据字段子集的列表中的唯一元素
- android - 如果我在查询中限制它,为什么 Firebase Firestore 会执行多个读取操作?
- javascript - React Native & i18n 在路由到另一个屏幕后返回默认语言
- c# - EventTrigger 和 DataTrigger 不能一起工作
- graphql - “GraphQLError:变量 \"$file\" 的值无效 {};上传值无效。”
- php - Laravel 查询生成器不返回数据
- reporting-services - 请求失败,HTTP 状态为 401:未经授权使用 DynamicsReports
- terraform - terraform 错误 - 未知筛选键:MSRC_SEVERITY