ActiveModel - проверка не удалась - PullRequest
0 голосов
/ 08 января 2019

Я получил ошибку Validation failed, когда я пытаюсь обновить поле, и я не уверен, что понимаю, как validates работает

У меня есть модель Booking, определенная следующим образом:

class Booking < ApplicationRecord
  include ActiveModel::Dirty

  validates :requester_status,
            inclusion: { in: %w[pending approved cancelled expired] }

  validates :host_status,
            inclusion: { in: %w[pending approved declined cancelled flexible_dates expired] }

  validates :start_at, date: { after: Date.yesterday }, presence: true
  validates :end_at, date: { after: :start_at }, presence: true
end

Я определил функцию для обновления hosts_status и requester_status, как показано ниже:

def self.set_expired
  pending_bookings = Booking.where(host_status: 'pending').where('end_at < ?', Date.today)

<pre><code>  pending_bookings.each do |pending_booking|
    pending_booking.host_status = 'expired'
    pending_booking.requester_status = 'expired'
    pending_booking.save!
  end
end

Я только обновляю host_status и requester_status, и я получил ошибку: ActiveRecord::RecordInvalid: Validation failed: Start at must be after 2019-01-07, тогда как это поле не обновляется.

Так что я не совсем понимаю, что происходит

...