class ActiveModel::AttributeSet

Experimental RBS support (using type sampling data from the type_fusion project).

# sig/active_model/attribute_set.rbs

class ActiveModel::AttributeSet
  def []: (String name) -> (ActiveModel::Attribute::FromUser | ActiveModel::Attribute::FromDatabase)
  def []=: (String name, ActiveModel::Attribute::FromDatabase value) -> ActiveModel::Attribute::FromDatabase
  def deep_dup: () -> ActiveModel::AttributeSet
  def fetch_value: (String name, ) -> (String | nil | Integer)
  def initialize: (Hash attributes) -> void
  def keys: () -> untyped
  def map: () -> ActiveModel::AttributeSet
  def write_from_user: (String name, (String | nil | Time) value) -> (String | nil | Time)
end

:nodoc:

def ==(other)

def ==(other)
  attributes == other.attributes
end

def [](name)

Experimental RBS support (using type sampling data from the type_fusion project).

def []: (String name) -> (ActiveModel::Attribute::FromUser | ActiveModel::Attribute::FromDatabase)

This signature was generated using 116 samples from 1 application.

def [](name)
  @attributes[name] || default_attribute(name)
end

def []=(name, value)

Experimental RBS support (using type sampling data from the type_fusion project).

def []=: (String name, ActiveModel::Attribute::FromDatabase value) -> ActiveModel::Attribute::FromDatabase

This signature was generated using 10 samples from 2 applications.

def []=(name, value)
  @attributes[name] = value
end

def accessed

def accessed
  attributes.each_key.select { |name| self[name].has_been_read? }
end

def deep_dup

Experimental RBS support (using type sampling data from the type_fusion project).

def deep_dup: () -> ActiveModel::AttributeSet

This signature was generated using 1 sample from 1 application.

def deep_dup
  AttributeSet.new(attributes.deep_dup)
end

def default_attribute(name)

def default_attribute(name)
  Attribute.null(name)
end

def fetch_value(name, &block)

Experimental RBS support (using type sampling data from the type_fusion project).

def fetch_value: (String name, ) -> (String | nil | Integer)

This signature was generated using 28 samples from 2 applications.

def fetch_value(name, &block)
  self[name].value(&block)
end

def freeze

def freeze
  attributes.freeze
  super
end

def initialize(attributes)

Experimental RBS support (using type sampling data from the type_fusion project).

def initialize: (( | id | ActiveModel::Attribute::FromDatabase | gem_name | ActiveModel::Attribute::FromDatabase | gem_version | ActiveModel::Attribute::FromDatabase | receiver | ActiveModel::Attribute::FromDatabase | method_name | ActiveModel::Attribute::FromDatabase | location | ActiveModel::Attribute::FromDatabase | type_fusion_version | ActiveModel::Attribute::FromDatabase | application_name | ActiveModel::Attribute::FromDatabase | source_ip | ActiveModel::Attribute::FromDatabase | parameters | ActiveModel::Attribute::FromDatabase | created_at | ActiveModel::Attribute::FromDatabase | updated_at | ActiveModel::Attribute::FromDatabase | return_value | ActiveModel::Attribute::FromDatabase) attributes) -> void

This signature was generated using 5 samples from 1 application.

def initialize(attributes)
  @attributes = attributes
end

def initialize_clone(_)

def initialize_clone(_)
  @attributes = @attributes.clone
  super
end

def initialize_dup(_)

def initialize_dup(_)
  @attributes = @attributes.dup
  super
end

def key?(name)

def key?(name)
  attributes.key?(name) && self[name].initialized?
end

def keys

Experimental RBS support (using type sampling data from the type_fusion project).

def keys: () -> untyped

This signature was generated using 2 samples from 1 application.

def keys
  attributes.each_key.select { |name| self[name].initialized? }
end

def map(&block)

Experimental RBS support (using type sampling data from the type_fusion project).

def map: () -> ActiveModel::AttributeSet

This signature was generated using 3 samples from 1 application.

def map(&block)
  new_attributes = attributes.transform_values(&block)
  AttributeSet.new(new_attributes)
end

def reset(key)

def reset(key)
  if key?(key)
    write_from_database(key, nil)
  end
end

def to_hash

def to_hash
  keys.index_with { |name| self[name].value }
end

def values_before_type_cast

def values_before_type_cast
  attributes.transform_values(&:value_before_type_cast)
end

def values_for_database

def values_for_database
  attributes.transform_values(&:value_for_database)
end

def write_cast_value(name, value)

def write_cast_value(name, value)
  @attributes[name] = self[name].with_cast_value(value)
end

def write_from_database(name, value)

def write_from_database(name, value)
  @attributes[name] = self[name].with_value_from_database(value)
end

def write_from_user(name, value)

Experimental RBS support (using type sampling data from the type_fusion project).

def write_from_user: (String name, (String | nil | Time) value) -> (String | nil | Time)

This signature was generated using 24 samples from 1 application.

def write_from_user(name, value)
  raise FrozenError, "can't modify frozen attributes" if frozen?
  @attributes[name] = self[name].with_value_from_user(value)
  value
end