рельсы — сравнение двух значений, чтобы увидеть, равны ли они

#ruby-on-rails #controller

#ruby-on-rails #контроллер

Вопрос:

Я хочу иметь возможность узнать, равны ли два значения в действии контроллера.

 def completed
  @meeting = Meeting.find(params[:id])
  if @meeting.day_of_meeting == @meeting.days
    @meeting.update_attribute(:day_of_meeting, '1')
    redirect_to :back
  else
    @meeting.increment!
    redirect_to :back
  end
end
  

Строка, о которой я говорю,:

 if @meeting.day_of_meeting == @meeting.days
  

Когда я запускаю его, кажется, он никогда не может проверить, что оба этих поля равны, и просто увеличивает поле day_of_meeting .

Любая помощь будет оценена.

Обновить

Приращение модели!

 def increment!
  update_attribute(:day_of_meeting, day_of_meeting   1)
end
  

По сути, @meeting.day_of_meeting — это тикер, который при равенстве @meeting.day я хочу, чтобы @meeting.day_of_workout был сброшен обратно на ‘1’. Происходит то, что @meeting.day_of_meeting никогда не сбрасывается и продолжает увеличиваться. Оба значения являются целыми числами.

Комментарии:

1. Вам нужно будет предоставить больше контекста … @meeting.day_of_meeting не похоже, что он когда-либо должен быть равен somethine called @meeting.days … Может быть, days — это массив, и вы видите, включает ли массив day_of_meeting или что-то в этом роде?

2. Это не массив. Это два столбца в одной таблице, которые при равенстве каждому требуют, чтобы day_of_meeting был сброшен обратно на ‘1’.

3. Они оба одного типа (например, целые числа или строки)? Похоже, было бы довольно просто устранить неполадки в консоли?

4. Я обновил вопрос. Надеюсь, это немного понятнее.

5. Это еще один ваш вопрос, который вызывает у меня красный флаг. Вы просите об ОЧЕНЬ странных вещах, и у меня есть внутреннее чувство, что это можно было бы сделать лучше (с точки зрения Rails и дизайна). Может быть, попробуйте задать более общий вопрос и связаться со мной — я буду рад помочь!

Ответ №1:

Не видя больше кода, я предполагаю, что либо @meeting.day_of_meeting, либо @meeting .дни, возможно, строка.

 @meeting.day_of_meeting == @meeting.days.to_i
  

предполагая @meeting.дни — это строка, которую вы можете преобразовать в целое число и сравнить.

Комментарии:

1. Абсолютно правильно. Я проверил это ранее, но по какой-то причине мои глаза обманули меня, заставив думать, что оба были сохранены как целые числа. Спасибо.

Ответ №2:

Возможно, что два списка имеют одинаковое содержимое, но в другом порядке, а затем не совсем одинаковы. Так что попробуйте:

 @meeting.day_of_meeting.sort == @meeting.days.sort