Attributes

提供方法:

attribute

define_attribute

下面主要讲解 attribute 方法。

1) 覆盖原有类型的行为

使用举例:

# db/schema.rb
create_table :store_listings, force: true do |t|
  t.decimal :price_in_cents
end

# app/models/store_listing.rb
class StoreListing < ActiveRecord::Base
end

store_listing = StoreListing.new(price_in_cents: '10.1')

# before
store_listing.price_in_cents # => BigDecimal.new(10.1)

class StoreListing < ActiveRecord::Base
  attribute :price_in_cents, Type::Integer.new
end

# after
store_listing.price_in_cents # => 10

2) 重新定义类型

使用举例:

Note: 覆盖或重新定义新的类型,也许并不是好的实践,使用之后会遇到新的问题。

最后更新于