dm-ambition

DataMapper::Ambition is a plugin that provides an Ambition-like API for accessing DataMapper models.

Installation

With Rubygems:

bash $ gem install dm-ambition $ irb -rubygems >> require 'dm-ambition' => true

With git and local working copy:

bash $ git clone git://github.com/dkubb/dm-ambition.git $ cd dm-ambition $ rake install $ irb -rubygems >> require 'dm-ambition' => true

Testing

The simplest way to test is with Bundler since it handles all dependencies:

bash $ rake local_gemfile $ BUNDLE_GEMFILE="Gemfile.local" ADAPTER="in_memory" bundle $ BUNDLE_GEMFILE="Gemfile.local" ADAPTER="in_memory" bundle exec rake spec

Examples

The standard Enumerable methods select, detect, reject, find_all, and find may be used with dm-ambition. These methods may be applied to the Model or Collection object.

```ruby # with == operator model_or_collection.select { |u| u.name == ‘Dan Kubb’ }

with =~ operator

model_or_collection.select { |u| u.name =~ /Dan Kubb/ }

with > operator

model_or_collection.select { |u| u.id > 1 }

with >= operator

model_or_collection.select { |u| u.id >= 1 }

with < operator

model_or_collection.select { |u| u.id < 1 }

with <= operator

model_or_collection.select { |u| u.id <= 1 }

with < operator

model_or_collection.select { |u| u.id < 1 }

with receiver.attribute.nil?

model_or_collection.select { |u| u.id.nil? }

with nil bind value

model_or_collection.select { |u| u.id == nil }

with true bind value

model_or_collection.select { |u| u.admin == true }

with false bind value

model_or_collection.select { |u| u.admin == false }

with AND conditions

model_or_collection.select { |u| u.id == 1 && u.name == ‘Dan Kubb’ }

with negated conditions

model_or_collection.select { |u| !(u.id == 1) }

with double-negated conditions

model_or_collection.select { |u| !(!(u.id == 1)) }

with matching from receiver

model_or_collection.select { |u| u == user }

with matching to receiver

model_or_collection.select { |u| user == u }

using send on receiver

model_or_collection.select { |u| u.send(:name) == ‘Dan Kubb’ }

with Array#include?

model_or_collection.select { |u| user_ids.include?(u.id) }

with Range#include?

model_or_collection.select { |u| (1..10).include?(u.id) }

with Hash#key?

model_or_collection.select { |u| { 1 => ‘Dan Kubb’ }.key?(u.id) }

with Hash#value?

model_or_collection.select { |u| { ‘Dan Kubb’ => 1 }.value?(u.id) }

with receiver and Array#include?

model_or_collection.select { |u| users.include?(u) }

with receiver and Hash#key?

model_or_collection.select { |u| { user => ‘Dan Kubb’ }.key?(u) }

with receiver and Hash#value?

model_or_collection.select { |u| { ‘Dan Kubb’ => user }.value?(u) } ```

Copyright © 2009-2011 Dan Kubb. See LICENSE for details.