Module: DataMapper::Ambition::Query
- Defined in:
- lib/dm-ambition/query.rb,
lib/dm-ambition/query/filter_processor.rb
Defined Under Namespace
Classes: FilterProcessor
Constant Summary collapse
- @@sexps =
{}
Instance Method Summary collapse
-
#filter(&block) ⇒ Object
TODO: spec and document this.
Instance Method Details
#filter(&block) ⇒ Object
TODO: spec and document this
8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/dm-ambition/query.rb', line 8 def filter(&block) # TODO: benchmark Marshal versus just building the sexp on demand # deep clone the sexp for multiple re-use sexp = Marshal.load(@@sexps[block.to_s] ||= Marshal.dump(block.to_sexp)) processor = FilterProcessor.new(block.binding, model) processor.process(sexp) self.class.new(repository, model, .merge(:conditions => conditions & processor.conditions)) end |