module LookupBy::Lookup::MacroMethods
Public Instance Methods
is_a_lookup?()
click to toggle source
# File lib/lookup_by/lookup.rb, line 7 def is_a_lookup? is_a? Lookup::ClassMethods end
lookup_by(field, options = {})
click to toggle source
# File lib/lookup_by/lookup.rb, line 23 def lookup_by(field, options = {}) begin return unless table_exists? rescue => error Rails.logger.error "lookup_by caught #{error.class.name} when connecting - skipping initialization (#{error.inspect})" return end options.symbolize_keys! options.assert_valid_keys :allow_blank, :order, :cache, :normalize, :find, :find_or_create, :raise, :safe raise "#{self} already called lookup_by" if is_a? Lookup::ClassMethods raise "#{self} responds_to .[], needed for lookup_by" if respond_to? :[] raise "#{self} responds_to .lookup, needed for lookup_by" if respond_to? :lookup extend ClassMethods class_eval do include InstanceMethods singleton_class.class_eval do attr_reader :lookup end lookup_by_disable :destroy, :destroy_all, :delete, :delete_all # TODO: check for a db unique constraint or Rails validation unless field == :name || column_names.include?("name") alias_attribute :name, field attr_accessible :name if respond_to?(:accessible_attributes) && accessible_attributes.include?(field) end @lookup = Cache.new(self, options.merge(field: field)) @lookup.load end LookupBy.register self end
lookup_by_disable(*methods)
click to toggle source
# File lib/lookup_by/lookup.rb, line 11 def lookup_by_disable(*methods) methods.each do |method| instance_eval <<-"END", __FILE__, __LINE__ + 1 def self.#{method}(*args) raise NotImplementedError, "#{name}.#{method} is not supported on cached lookup tables." if @lookup.has_cache? super end END end end