module StrictlyUntyped module ConditionsScope # Makes it easy to add scopes which are only conditions. # # For example, # class Person < ActiveRecord::Base # named_scope :active, :conditions => {:active => true} # end # # Can be replaced with # named_conditions :active, :active => true # # # Also, # Person.scoped(:conditions => {:active => true}) # # Can be replaced with # Person.conditions :active => true # def self.included(base) base.class_eval do extend ClassMethods named_conditions :conditions, lambda { |conditions| conditions } end end module ClassMethods def named_conditions(name, conditions, &block) named_scope(name, case conditions when Hash {:conditions => conditions} when Proc lambda { |*args| {:conditions => conditions.call(*args)} } end, &block) end end end end