module Riveter::Enquiry::ClassMethods
Public Instance Methods
filter_with(query_filter_klass=nil, &block)
click to toggle source
# File lib/riveter/enquiry.rb, line 20 def filter_with(query_filter_klass=nil, &block) raise "Filter already defined." if self.respond_to?(:query_filter_class) unless query_filter_klass raise ArgumentError, "Missing block" unless block_given? # define an anomymous class derived from QueryFilter # which invokes the block given in the classes context query_filter_klass = Class.new(QueryFilter::Base) query_filter_klass.class_eval(&block) # for anonymous classes, need to override the # model_name method so that forms etc can work enquiry_name = self.enquiry_name query_filter_klass.class_eval do define_singleton_method :model_name do enquiry_name end end end define_singleton_method :query_filter_class do query_filter_klass end define_method :query_filter_class do query_filter_klass end define_singleton_method :query_filter_attributes do query_filter_klass.attributes end end
query_with(query_klass=nil, &block)
click to toggle source
# File lib/riveter/enquiry.rb, line 54 def query_with(query_klass=nil, &block) raise "Query already defined." if self.respond_to?(:query_class) unless query_klass raise ArgumentError, "Missing block" unless block_given? # define an anomymous class derived from Query # which delegates to the block given query_klass = Class.new(Query::Base) query_klass.class_eval do define_method :build_relation, &block protected :build_relation end end define_singleton_method :query_class do query_klass end define_method :query_class do query_klass end end