Ruby on Rails
ActsAsList (Version #1)

ActsAsList provides the capabilities for sorting and reordering a number of objects in list. The class that has this specified needs to have a “position” column defined as an integer on the mapped database table1.

Todo list example:


  class <span class="newWikiWord">TodoList<a href="http://wiki.rubyonrails.org/rails/pages/TodoList">?</a></span> < <a href="http://wiki.rubyonrails.org/rails/pages/ActiveRecord" class="existingWikiWord">ActiveRecord</a>::Base
    has_many :todo_items, :order => "position" 
  end

  class <span class="newWikiWord">TodoItem<a href="http://wiki.rubyonrails.org/rails/pages/TodoItem">?</a></span> < <a href="http://wiki.rubyonrails.org/rails/pages/ActiveRecord" class="existingWikiWord">ActiveRecord</a>::Base
    belongs_to :todo_list
    acts_as_list :scope => :todo_list
  end

  todo_list.first.move_to_bottom
  todo_list.last.move_higher

API documentation

Examples

  • Hierakis Chapter and Page models. See also the interesting implementation of “up/down/top/bottom” in the chapter controller
  • s5presents Slide model(app\models\slide.rb) and controller(app\controllers\slide_controller.rb)

1 Taken directly from the API

ActsAsList provides the capabilities for sorting and reordering a number of objects in list. The class that has this specified needs to have a “position” column defined as an integer on the mapped database table1.

Todo list example:


  class <span class="newWikiWord">TodoList<a href="http://wiki.rubyonrails.org/rails/pages/TodoList">?</a></span> < <a href="http://wiki.rubyonrails.org/rails/pages/ActiveRecord" class="existingWikiWord">ActiveRecord</a>::Base
    has_many :todo_items, :order => "position" 
  end

  class <span class="newWikiWord">TodoItem<a href="http://wiki.rubyonrails.org/rails/pages/TodoItem">?</a></span> < <a href="http://wiki.rubyonrails.org/rails/pages/ActiveRecord" class="existingWikiWord">ActiveRecord</a>::Base
    belongs_to :todo_list
    acts_as_list :scope => :todo_list
  end

  todo_list.first.move_to_bottom
  todo_list.last.move_higher

API documentation

Examples

  • Hierakis Chapter and Page models. See also the interesting implementation of “up/down/top/bottom” in the chapter controller
  • s5presents Slide model(app\models\slide.rb) and controller(app\controllers\slide_controller.rb)

1 Taken directly from the API