Добавление даты в атрибут даты в активной записи - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь добавить дату рождения для каждого пациента в моей базе данных, и возникают проблемы при добавлении даты в атрибут 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 голосов
/ 21 ноября 2018

У вас есть две проблемы:

  1. first не принимает аргументы запроса.
  2. Ваш формат даты неоднозначен.

The first метод поиска выглядит следующим образом:

first (limit = nil)
Найти первую запись (или первые N записи, если aпараметр указан).Если порядок не определен, он будет заказываться по первичному ключу.

Вы хотите использовать find_by в качестве ярлыка .where(...).first.

И чтобы избежать двусмысленности с датами, выследует использовать Date объекты или строки в формате ISO-8601 (т.е. YYYY-MM-DD) внутри приложения и оставить якобы «дружественные» форматы для самых краев.

Вы хотите сказать:

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