brandという名前のフィールドを持つProductという名前のこのモデルがあるとします。brandの値がthis_is_a_brandの形式で格納されているとします。ブランドが呼び出される前にブランドの値を変更できるようにするメソッドをモデル (または他の場所) で定義できますか? たとえば、@product.brandを呼び出した場合、 this_is_a_brandではなく、This is a Brandを取得したいとします。
4923 次
4 に答える
11
andの代わりに角括弧構文 ( []
and ) を使用することをお勧めします。角かっこの構文は短く、保護されたread/write_attribute メソッドをラップするように設計されています。[]=
read_attribute
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 に直接アクセスするのではなく、 and を使用する必要がread_attribute
あり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
モデルでは、メソッド call をオーバーライドできます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 に答える