Module: ActiveRecord::AttributeMethods::ClassMethods
- Defined in:
- activerecord/lib/active_record/attribute_methods.rb
Instance Method Summary collapse
- #attribute_methods_generated? ⇒ Boolean
-
#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.
- #undefine_attribute_methods(*args) ⇒ Object
Instance Method Details
#attribute_methods_generated? ⇒ Boolean
18 19 20 |
# File 'activerecord/lib/active_record/attribute_methods.rb', line 18 def attribute_methods_generated? @attribute_methods_generated ||= false end |
#define_attribute_methods ⇒ Object
Generates all the attribute related methods for columns in the database accessors, mutators and query methods.
12 13 14 15 16 |
# File 'activerecord/lib/active_record/attribute_methods.rb', line 12 def define_attribute_methods return if attribute_methods_generated? super(column_names) @attribute_methods_generated = true end |
#defined_activerecord_methods ⇒ Object
42 43 44 45 46 47 48 |
# File 'activerecord/lib/active_record/attribute_methods.rb', line 42 def defined_activerecord_methods active_record = ActiveRecord::Base super_klass = ActiveRecord::Base.superclass methods = (active_record.instance_methods - super_klass.instance_methods) + (active_record.private_instance_methods - super_klass.private_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.
30 31 32 33 34 35 36 37 38 39 40 |
# File 'activerecord/lib/active_record/attribute_methods.rb', line 30 def instance_method_already_implemented?(method_name) method_name = method_name.to_s index = ancestors.index(ActiveRecord::Base) || ancestors.length @_defined_class_methods ||= ancestors.first(index).map { |m| m.instance_methods(false) | m.private_instance_methods(false) }.flatten.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 |
#undefine_attribute_methods(*args) ⇒ Object
22 23 24 25 |
# File 'activerecord/lib/active_record/attribute_methods.rb', line 22 def undefine_attribute_methods(*args) super @attribute_methods_generated = false end |