ske*_*ker 5 ruby attributes model ruby-on-rails
假设我有一个名为Product的模型,其中有一个名为brand的字段.假设品牌的值以this_is_a_brand格式存储.我可以在模型中(或其他任何地方)定义一个方法,允许我在调用之前修改品牌的价值.例如,如果我打电话给@ product.brand,我想得到这是一个品牌,而不是this_is_a_brand.
two*_*ool 10
我建议使用方括号语法([]
和[]=
)而不是read_attribute
和write_attribute
.方括号语法较短,旨在包装受保护的 read/write_attribute方法.
def brand
original = self[:brand]
transform(original)
end
def brand=(b)
self[:brand] = reverse_transform(b)
end
Run Code Online (Sandbox Code Playgroud)
您应该使用read_attribute
和write_attribute
:而不是直接访问@attributes .
def brand
b = read_attribute(:brand)
b && b.transform_in_some_way
end
def brand=(b)
b && b.transform_in_some_way
write_attribute(:brand, b)
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4208 次 |
最近记录: |