Sha256: a7ff869d5aa3b575e78169ebfe5c5fa90635baa390ac8a73185882c2df80a92e
Contents?: true
Size: 1.29 KB
Versions: 10
Compression:
Stored size: 1.29 KB
Contents
module ActiveRecord module AttributeMethods module Read module ClassMethods def internal_attribute_access_code(attr_name, cast_code) # CPK - this is a really horrid hack, needed to get # right class namespace :( if cast_code.match(/^ActiveRecord/) cast_code = "::#{cast_code}" end access_code = "(v=@attributes[attr_name]) && #{cast_code}" # CPK #unless attr_name == primary_key primary_keys = Array(self.primary_key) unless primary_keys.include?(attr_name.to_s) access_code.insert(0, "missing_attribute(attr_name, caller) unless @attributes.has_key?(attr_name); ") end if cache_attribute?(attr_name) access_code = "@attributes_cache[attr_name] ||= (#{access_code})" end "attr_name = '#{attr_name}'; #{access_code}" end end rails_read_attribute = instance_method(:read_attribute) define_method(:read_attribute) do |attr_name| if attr_name.kind_of?(Array) attr_name.map {|name| read_attribute(name)}.to_composite_keys else rails_read_attribute.bind(self).(attr_name) end end end end end ActiveRecord::Base.class_eval do alias :[] :read_attribute end
Version data entries
10 entries across 10 versions & 1 rubygems