跳至内容 跳至搜索

Active Model 属性

The Attributes 模块允许模型定义超出简单 Ruby 读写器的属性。类似于 Active Record 属性(通常从数据库模式推断),Active Model Attributes 了解数据类型,可以具有默认值,并且可以处理转换和序列化。

要使用 Attributes,请在您的模型类中包含该模块,并使用 attribute 宏定义您的属性。它接受名称、类型、默认值以及属性类型支持的任何其他选项。

示例

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
命名空间
方法
A
包含的模块

实例公共方法

attribute_names()

返回一个包含属性名称(作为字符串)的数组。

class Person
  include ActiveModel::Attributes

  attribute :name, :string
  attribute :age, :integer
end

person = Person.new
person.attribute_names # => ["name", "age"]
# File activemodel/lib/active_model/attributes.rb, line 146
def attribute_names
  @attributes.keys
end

attributes()

返回一个包含所有属性的哈希表,其中键为属性名称,值为属性值。

class Person
  include ActiveModel::Attributes

  attribute :name, :string
  attribute :age, :integer
end

person = Person.new
person.name = "Francesco"
person.age = 22

person.attributes # => { "name" => "Francesco", "age" => 22}
# File activemodel/lib/active_model/attributes.rb, line 131
def attributes
  @attributes.to_hash
end