Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

acts_as_list_mongoid

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

acts_as_list_mongoid

  • 0.2.5.1
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Mongoid Acts as list

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.

Installation

gem install acts_as_list_mongoid

Usage

See the /specs folder specs that demontrate the API. Usage examples are located in the /examples folder.

Update 26, Nov 2010

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.

Example

  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)

Overriding defaults

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

List initialization

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!

New move API borrowed from Data Mapper in-list plugin

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 specs

rspec spec


FAQs

Package last updated on 19 Jan 2012

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc