Является ли Acts_as_list последним? метод не работает, как задумано, или я делаю ошибку? - PullRequest
0 голосов
/ 22 декабря 2010

Так что я использую act_as_list в моем текущем проекте rails.И я сталкиваюсь со следующим странным поведением:

Когда я удаляю элемент из списка (item.remove_from_list), он правильно устанавливает для столбца позиции этого элемента значение nil и обновляет значения позицийиз других пунктов списка.

Однако, когда я звоню в последний раз?для «последнего» элемента в списке (например, элемента с наибольшим номером позиции) возвращается значение false.На самом деле, каждый элемент в списке будет возвращать false до последнего?метод.Я вдруг, кажется, потерял свой последний?вещь!

Что здесь происходит?

С уважением, Эрвин

1 Ответ

1 голос
/ 22 декабря 2010

В act_as_list метод last? добавляется к каждому экземпляру ActiveRecord:

# Return +true+ if this object is the last in the list.
def last?
  return false unless in_list?
  self.send(position_column) == bottom_position_in_list
end

Сначала проверяется, есть ли объект в списке. Вот метод:

# Test if this record is in a list
def in_list?
  !send(position_column).nil?
end

Так что я бы проверил position_column объекта, который, как вы полагаете, является последним в списке, чтобы убедиться, что он не ноль. Делайте это до и после удаления объекта из списка.

...