Я получил ошибку 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
, тогда как это поле не обновляется.
Так что я не совсем понимаю, что происходит