rails plugin that adds default includes to activerecord models
November 19th, 2007 • Uncategorized
# USAGE
# class Foo < ActiveRecord::Base
# default_includes = {
# [ :bar => :baz ],
# :bam
# }
# end
# end
module DefaultIncludeHelper
def self.included(base)
base.extend(ClassMethods)
end
class InvalidEagerLoadingDefaults < Exception; end
module ClassMethods
attr_reader :default_includes
def find_with_default_includes(*args)
options = args.extract_options!
if @default_includes && !options[:include]
options.merge!(:include => @default_includes)
end
find(*(args << options))
end
def eager_loading_defaults(defaults)
unless valid_default_includes?(defaults)
msg = 'includes must be either a Hash, an Array or a Symbol'
raise InvalidEagerLoadingDefaults, msg
end
@default_includes = defaults
end
private
def valid_default_includes?(o)
o.is_a?(Symbol) || o.is_a?(Array) || o.is_a?(Hash)
end
end
end