假设我有一个名为Product的模型,其字段名为brand。假设品牌值以this_is_a_brand格式存储。我可以在模型(或其他任何地方)中定义一个方法,允许我在调用之前修改品牌的价值。例如,如果我调用@product.brand,我想得到This is a Brand,而不是this_is_a_brand。
sker
问问题
4923 次
4 回答
11
我建议使用方括号语法 ( []
and []=
) 而不是read_attribute
and write_attribute
。方括号语法更短,旨在包装受保护的read/write_attribute 方法。
def brand
original = self[:brand]
transform(original)
end
def brand=(b)
self[:brand] = reverse_transform(b)
end
于 2008-10-08T17:49:38.510 回答
8
而不是直接访问@attributes,您应该使用read_attribute
and write_attribute
:
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
于 2008-10-08T08:32:34.843 回答
0
在您的模型中,您可以覆盖方法调用brand
。
def brand
#code to modify the value that is stored in brand
return modified_brand
end
这将允许将其存储为 this_is_a_brand。但是,它将作为“这是一个品牌”返回。
于 2008-10-08T07:25:22.450 回答