Проверка не удалась: [атрибут] не может быть пустым - (но это не так !?) - PullRequest
1 голос
/ 07 июля 2019

В моем приложении есть следующая модель SupportSession и правило проверки:

class SupportSession < ApplicationRecord
  validates :cancelled, presence: true

Но всякий раз, когда я пытаюсь заполнить свою базу данных следующими данными:

SupportSession.create!(venue: 'Cafe', mode_of_delivery: 'face-to-face', support_type: 'mentoring', start_time: '2019-05-15 16:12', end_time: '2019-05-15 16:35', total_breaks_mins: 0, duration_mins: 23, rounded_duration_mins: 30, status: 'ready', cancelled: false, support_allocation_id: 6)

Я получаю эту ошибку:

ActiveRecord::RecordInvalid (Validation failed: Cancelled can't be blank)

Я в замешательстве, потому что в моих начальных данных явно указано отмененное.

Вот структура таблицы SupportSession:

  t.string :venue
  t.string :mode_of_delivery
  t.string :support_type
  t.datetime :start_time
  t.datetime :end_time
  t.integer :duration_mins
  t.integer :rounded_duration_mins
  t.integer :total_breaks_mins
  t.string :status
  t.boolean :cancelled
  t.string :reason_for_cancellation
  t.datetime :rearranged_to

Есть идеи?

Я также пробовал это в моей модели:

validates_presence_of

и используется:

cancelled: '0'
cancelled: 0
cancelled: 'false'

Но, похоже, никто не работает.

1 Ответ

2 голосов
/ 07 июля 2019

blank? возвращает значение true для значения false.Поведение этого метода может быть довольно сложным при запуске Rails.Просто чтобы назвать самые обычные обстоятельства.

false.blank?     # => true
''.blank?        # => true
'   '.blank?     # => true
"\t\n\r".blank?  # => true
' blah '.blank?  # => false

Вы можете обойти это , выполнив

validates :cancelled, presence: true, allow_blank: true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...