Как не содержать отметку времени при изменении состояния объекта обновления?

Я использую рабочий процесс в качестве конечного автомата. Я хочу после каждого обновления переместить состояние в awaiting_review но у меня есть также current_sign_in_at атрибут после входа пользователя в его состояние меняется на awaiting_review как этого избежать?

before_save :needs_review, on: :update

# before_save
def needs_review
  self.state = 'awaiting_review' unless state_changed?
end

workflow do
  state :awaiting_review do
    event :accept, :transitions_to => :accepted
    event :reject, :transitions_to => :rejected
  end
  state :accepted do
    event :reject, :transitions_to => :rejected
  end
  state :rejected
end
#  sign_in_count          :integer          default(0)
#  current_sign_in_at     :datetime
#  last_sign_in_at        :datetime
#  current_sign_in_ip     :string(255)
#  last_sign_in_ip        :string(255)

1 ответ

Решение
def needs_review
  if (%w[sign_in_count current_sign_in_at last_sign_in_at ...] & changes).empty?
    self.state = 'awaiting_review' unless state_changed?
  end
end
Другие вопросы по тегам