Как не содержать отметку времени при изменении состояния объекта обновления?
Я использую рабочий процесс в качестве конечного автомата. Я хочу после каждого обновления переместить состояние в 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