
Security News
Oxlint Introduces Type-Aware Linting Preview
Oxlint’s new preview brings type-aware linting powered by typescript-go, combining advanced TypeScript rules with native-speed performance.
acts_as_list_mongoid
Advanced tools
This is a port of the classic +acts_as_list+ to Mongoid.
This acts_as extension provides the capabilities for sorting and reordering a number of objects in a list. If you do not specify custom position +column+ in the options, a key named +pos+ will be used automatically.
gem install acts_as_list_mongoid
See the /specs folder specs that demontrate the API. Usage examples are located in the /examples folder.
The gem doesn't seem to work with the latest versions of Mongoid (> beta14), please help fix this ;) Usage has been simplified using a suggestion by 'KieranP'
To make a class Act as List, simply do:
include ActsAsList::Mongoid
And it will automatically set up a field and call acts_as_list with that field. By default the field name is :position.
You can change the defaut position_column name used: ActsAsList::Mongoid.default_position_column = :pos
.
For this class variable to be effetive, it should be set before calling include ActsAsList::Mongoid
.
require 'mongoid' require 'mongoid_embedded_helper' Mongoid.configure.master = Mongo::Connection.new.db('acts_as_list-test') class Item include Mongoid::Document include Mongoid::Timestamps include ActsAsList::Mongoid field :number, :type => Integer embedded_in :list, :inverse_of => :items end class List include Mongoid::Document field :name, :type => String embeds_many :items end todo_list = List.new :name => 'My todo list' %w{'clean', 'wash', 'repair'}.each do |name| todo_item = Item.new(:name => name) todo_list.items << todo_item end todo_list.items.init_list! # IMPORTANT!!! todo_list.items.first.move(:bottom) todo_list.items.last.move(:higher)
By default, when including ActsAsList::Mongoid, the field is set to :pos and the acts_as_list column to :pos. To change this:
include ActsAsList::Mongoid field :pos, :type => Integer acts_as_list :column => :pos
In order for the list items to be initialized properly, it is necessary to call the method init_list!
on the
collection in order for the position of each list item to be set to an initial position.
+Example:+
todo_list.items.init_list!
item.move(:highest) # moves to top of list. item.move(:lowest) # moves to bottom of list. item.move(:top) # moves to top of list. item.move(:bottom) # moves to bottom of list. item.move(:up) # moves one up (:higher and :up is the same) within the scope. item.move(:down) # moves one up (:lower and :down is the same) within the scope. item.move(:to => position) # moves item to a specific position. item.move(:above => other) # moves item above the other item.* item.move(:below => other)## Running the specsrspec spec
FAQs
Unknown package
We found that acts_as_list_mongoid demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oxlint’s new preview brings type-aware linting powered by typescript-go, combining advanced TypeScript rules with native-speed performance.
Security News
A new site reviews software projects to reveal if they’re truly FOSS, making complex licensing and distribution models easy to understand.
Security News
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.