0

所以我在我当前的 rails 项目中使用acts_as_list。我遇到了以下奇怪的行为:

当我从列表中删除一个项目(item.remove_from_list)时,它会正确地将此项的位置列设置为nil并更新其他列表项的位置值。

但是,当我最后一次打电话时?在列表中的“最后一个”项目(例如位置编号最高的项目)上,它返回 false。实际上,列表中的每一项都会返回false到最后?方法。我突然好像失去了我的最后一个?物品!

这里出了什么问题?

亲切的问候,欧文

4

1 回答 1

1

在acts_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 是否为非零。在从列表中删除对象之前和之后执行此操作。

于 2010-12-22T02:00:24.420 回答