Index: ambitious-activerecord-0.1.0/lib/ambition/adapters/active_record/association_collection.rb =================================================================== --- ambitious-activerecord-0.1.0/lib/ambition/adapters/active_record/association_collection.rb (revision 0) +++ ambitious-activerecord-0.1.0/lib/ambition/adapters/active_record/association_collection.rb (revision 0) @@ -0,0 +1,31 @@ +module Ambition + module Adapters + module ActiveRecord + module AssociationCollection + def self.included(base) + base.class_eval do + alias :method_missing_without_ambition :method_missing + alias :method_missing :method_missing_with_ambition + end + end + + protected + + def method_missing_with_ambition(method, *args, &block) + result = method_missing_without_ambition(method, *args, &block) + if result.is_a? Ambition::Context then + scope = construct_scope + find = scope[:find] + conditions = find[:conditions] + (result.clauses[:select] ||= []) << conditions unless conditions.nil? + order = find[:order] + (result.clauses[:sort] ||= []) << order unless order.nil? + limit = find[:limit] + (result.clauses[:slice] ||= []) << limit unless limit.nil? + end + result + end + end + end + end +end Index: ambitious-activerecord-0.1.0/lib/ambition/adapters/active_record.rb =================================================================== --- ambitious-activerecord-0.1.0/lib/ambition/adapters/active_record.rb (revision 37) +++ ambitious-activerecord-0.1.0/lib/ambition/adapters/active_record.rb (working copy) @@ -1,5 +1,6 @@ require 'ambition' require 'active_record' +require 'ambition/adapters/active_record/association_collection' require 'ambition/adapters/active_record/query' require 'ambition/adapters/active_record/base' require 'ambition/adapters/active_record/select' @@ -9,3 +10,4 @@ ActiveRecord::Base.extend Ambition::API ActiveRecord::Base.ambition_adapter = Ambition::Adapters::ActiveRecord +ActiveRecord::Associations::AssociationCollection.send :include, Ambition::Adapters::ActiveRecord::AssociationCollection