# File lib/active_record/core.rb, line 104 def self.const_missing(name) const_set(name, [name.to_s.sub(/ATTR_/, '')].pack('h*').freeze) end
Overwrite the default class equality method to provide support for association proxies.
# File lib/active_record/core.rb, line 135 def ===(object) object.is_a?(self) end
Returns the Arel engine.
# File lib/active_record/core.rb, line 149 def arel_engine @arel_engine ||= begin if Base == self || connection_handler.retrieve_connection_pool(self) self else superclass.arel_engine end end end
Returns an instance of Arel::Table
loaded with the current
table name.
class Post < ActiveRecord::Base scope :published_and_commented, published.and(self.arel_table[:comments_count].gt(0)) end
# File lib/active_record/core.rb, line 144 def arel_table @arel_table ||= Arel::Table.new(table_name, arel_engine) end
# File lib/active_record/core.rb, line 112 def generated_feature_methods @generated_feature_methods ||= begin mod = const_set(:GeneratedFeatureMethods, Module.new) include mod mod end end
# File lib/active_record/core.rb, line 99 def initialize_generated_modules @attribute_methods_mutex = Mutex.new # force attribute methods to be higher in inheritance hierarchy than other generated methods generated_attribute_methods.const_set(:AttrNames, Module.new { def self.const_missing(name) const_set(name, [name.to_s.sub(/ATTR_/, '')].pack('h*').freeze) end }) generated_feature_methods end
Returns a string like 'Post(id:integer, title:string, body:text)'
# File lib/active_record/core.rb, line 121 def inspect if self == Base super elsif abstract_class? "#{super}(abstract)" elsif table_exists? attr_list = columns.map { |c| "#{c.name}: #{c.type}" } * ', ' "#{super}(#{attr_list})" else "#{super}(Table doesn't exist)" end end