У меня есть массив объектов встреч, и я хотел бы отсортировать по атрибуту start_at.
my_array.uniq.sort_by! {|obj| obj.starts_at}
Однако я получил следующую ошибку: comparison of ActiveSupport::TimeWithZone with nil failed
Я уверен, что у меня нет nil-значения для start_at.В чем здесь проблема?Кроме того, как я могу сортировать по убыванию?
Обновление 1: Я понял, что Uniq!дает мне ноль, когда я вызываю .all метод для моего класса Appointment.Без uniq все работает нормально.
Appointment.all.uniq!
Обновление 2: Я не могу применить минус к obj.starts_at.Это дает мне ошибку: метод - не может быть найден в формате времени UTC.Вероятно, ч / б время не допускается равным нулю.Есть какие-нибудь мысли по поводу преодоления этого?
Обновление 3: my_array.uniq.sort { |x, y| (x.starts_at || nil) <=> (y.starts_at || nil)}
работает в консоли, но когда я запускаю свое приложение, оно говорит: comparison of Event with Event failed
Последнееобновление: Следующие работы:
@events.sort_by!{|obj| (obj.starts_at.nil? ? 3.years.ago : obj.starts_at.utc)}
Мне нужно преобразовать формат даты в .utc и обработать пропущенный start_at (извините, я не знаю, почему у меня пропущен start_atатрибут объекта)