instance method define_attribute

Ruby on Rails 6.0.6

Since v5.2.8.1

Available in: v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

define_attribute( name, cast_type, default: NO_DEFAULT_PROVIDED, user_provided_default: true )

This is the low level API which sits beneath attribute. It only accepts type objects, and will do its work immediately instead of waiting for the schema to load. Automatic schema detection and ClassMethods#attribute both call this under the hood. While this method is provided so it can be used by plugin authors, application code should probably use ClassMethods#attribute.

name The name of the attribute being defined. Expected to be a String.

cast_type The type object to use for this attribute.

default The default value to use when no value is provided. If this option is not passed, the previous default value (if any) will be used. Otherwise, the default will be nil. A proc can also be passed, and will be called once each time a new value is needed.

user_provided_default Whether the default value should be cast using cast or deserialize.

Parameters

name req
cast_type req
default key = NO_DEFAULT_PROVIDED
user_provided_default key = true
Source
# File activerecord/lib/active_record/attributes.rb, line 236
      def define_attribute(
        name,
        cast_type,
        default: NO_DEFAULT_PROVIDED,
        user_provided_default: true
      )
        attribute_types[name] = cast_type
        define_default_attribute(name, default, cast_type, from_user: user_provided_default)
      end

Defined in activerecord/lib/active_record/attributes.rb line 236 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveRecord::Attributes::ClassMethods

Type at least 2 characters to search.

↑↓ navigate · open · esc close