module ActiveModel::Attributes::ClassMethods
Public Instance Methods
attribute(name, cast_type = nil, default: nil, **options)
click to toggle source
Defines a model attribute. In addition to the attribute name, a cast type and default value may be specified, as well as any options supported by the given cast type.
class Person include ActiveModel::Attributes attribute :name, :string attribute :active, :boolean, default: true end person = Person.new person.name = "Volmer" person.name # => "Volmer" person.active # => true
Calls superclass method
# File lib/active_model/attributes.rb, line 59 def attribute(name, ...) super define_attribute_method(name) end
attribute_names()
click to toggle source
Returns an array of attribute names as strings.
class Person include ActiveModel::Attributes attribute :name, :string attribute :age, :integer end Person.attribute_names # => ["name", "age"]
# File lib/active_model/attributes.rb, line 74 def attribute_names attribute_types.keys end
type_for_attribute(attribute_name, &block)
click to toggle source
Returns the type of the specified attribute after applying any modifiers. This method is the only valid source of information for anything related to the types of a model’s attributes. The return value of this method will implement the interface described by ActiveModel::Type::Value
(though the object itself may not subclass it).
# File lib/active_model/attributes.rb, line 79
Private Instance Methods
define_method_attribute=(canonical_name, owner:, as: canonical_name)
click to toggle source
# File lib/active_model/attributes.rb, line 92 def define_method_attribute=(canonical_name, owner:, as: canonical_name) ActiveModel::AttributeMethods::AttrNames.define_attribute_accessor_method( owner, canonical_name, writer: true, ) do |temp_method_name, attr_name_expr| owner.define_cached_method(temp_method_name, as: "#{as}=", namespace: :active_model) do |batch| batch << "def #{temp_method_name}(value)" << " _write_attribute(#{attr_name_expr}, value)" << "end" end end end