0

そのため、現在のRailsプロジェクトでacts_as_listを使用しています。そして、私は次の奇妙な振る舞いに遭遇します:

リスト(item.remove_from_list)からアイテムを削除すると、このアイテムの位置列が正しくnilに設定され、他のリストアイテムの位置値が更新されます。

しかし、最後に電話したのはいつですか?リストの「最後の」項目(たとえば、位置番号が最も大きい項目)では、falseを返します。実際、リスト内のすべての項目は最後までfalseを返しますか?方法。私は突然私の最後を失ったようですか?アイテム!

ここで何が問題になっていますか?

よろしく、アーウィン

4

1 に答える 1

1

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 をチェックして、それが nil でないかどうかを確認します。これは、リストからオブジェクトを削除する前後に行ってください。

于 2010-12-22T02:00:24.420 に答える