method
define_attribute_method_pattern
v7.2.3 -
Show latest stable
- Class:
ActiveModel::AttributeMethods::ClassMethods
define_attribute_method_pattern(pattern, attr_name, owner:, as:, override: false)public
No documentation available.
# File activemodel/lib/active_model/attribute_methods.rb, line 320
def define_attribute_method_pattern(pattern, attr_name, owner,, as,, override: false) # :nodoc:
canonical_method_name = pattern.method_name(attr_name)
public_method_name = pattern.method_name(as)
# If defining a regular attribute method, we don't override methods that are explictly
# defined in parrent classes.
if instance_method_already_implemented?(public_method_name)
# However, for `alias_attribute`, we always define the method.
# We check for override second because `instance_method_already_implemented?`
# also check for dangerous methods.
return unless override
end
generate_method = "define_method_#{pattern.proxy_target}"
if respond_to?(generate_method, true)
send(generate_method, attr_name.to_s, owner: owner, as: as)
else
define_proxy_call(
owner,
canonical_method_name,
pattern.proxy_target,
pattern.parameters,
attr_name.to_s,
namespace: :active_model_proxy,
as: public_method_name
)
end
end