Я занимаюсь разработкой приложения для рельсов. Большинство частей работают нормально, но у меня возникла одна странная проблема, когда я попытался подсчитать время, которое пользователь использовал для редактирования и отправки одной формы.
Я подумал, что было бы хорошо сделать это в следующем порядке:
1. в методе «edit» контроллера запишите время, когда пользователь начинает видеть форму.
2. в методе «update» запишите время отправки, затем выполните математические расчеты и узнайте, сколько времени пользователь провел в форме.
class Test
@@start_time = 0
@@end_time = 0
def edit
@@start_time = Time.now
end
def update
@@end_time = Time.now
time_used = @@end_time - @@start_time
puts time_used.to_i
end
end
Приведенный выше код на самом деле отлично работает при работе на моем собственном развивающемся компьютере, результат - то, что я ожидал. Но когда я загружаю код в производственную среду (многоядерный процессор), иногда результат получается верным, иногда нет. Я отладил код и обнаружил, что в некоторых случаях @@ start_time устанавливается в 0 при отправке формы. Я не понимаю, что происходит, может быть, я просто неправильно использовал @@ для переменной. Пожалуйста, помогите мне, любая идея будет оценена, спасибо.
Edit:
Проблема решается путем добавления виртуального атрибута к модели, на что намекал Вишал. Кроме того, я добавил скрытое поле в форму отправки и в часть с сильными параметрами добавил соответствующий параметр, чтобы его можно было передать из метода редактирования в обновление.