Module: ActiveRecord::AttributeMethods::ClassMethods
- Defined in:
- lib/active_record/attribute_methods.rb
Instance Method Summary collapse
-
#define_attribute_methods ⇒ Object
Generates all the attribute related methods for columns in the database accessors, mutators and query methods.
- #defined_activerecord_methods ⇒ Object
-
#instance_method_already_implemented?(method_name) ⇒ Boolean
Checks whether the method is defined in the model or any of its subclasses that also derive from Active Record.
Instance Method Details
#define_attribute_methods ⇒ Object
Generates all the attribute related methods for columns in the database accessors, mutators and query methods.
12 13 14 |
# File 'lib/active_record/attribute_methods.rb', line 12 def define_attribute_methods super(columns_hash.keys) end |
#defined_activerecord_methods ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/active_record/attribute_methods.rb', line 27 def defined_activerecord_methods active_record = ActiveRecord::Base super_klass = ActiveRecord::Base.superclass methods = active_record.public_instance_methods - super_klass.public_instance_methods methods += active_record.private_instance_methods - super_klass.private_instance_methods methods += active_record.protected_instance_methods - super_klass.protected_instance_methods methods.map {|m| m.to_s }.to_set end |
#instance_method_already_implemented?(method_name) ⇒ Boolean
Checks whether the method is defined in the model or any of its subclasses that also derive from Active Record. Raises DangerousAttributeError if the method is defined by Active Record though.
19 20 21 22 23 24 25 |
# File 'lib/active_record/attribute_methods.rb', line 19 def instance_method_already_implemented?(method_name) method_name = method_name.to_s @_defined_class_methods ||= ancestors.first(ancestors.index(ActiveRecord::Base)).sum([]) { |m| m.public_instance_methods(false) | m.private_instance_methods(false) | m.protected_instance_methods(false) }.map {|m| m.to_s }.to_set @@_defined_activerecord_methods ||= defined_activerecord_methods raise DangerousAttributeError, "#{method_name} is defined by ActiveRecord" if @@_defined_activerecord_methods.include?(method_name) @_defined_class_methods.include?(method_name) end |