比方說,我有這個型號名爲產品與字段品牌。假設品牌的值以格式this_is_a_brand存儲。我可以在模型(或其他地方)中定義一種方法,允許我在調用品牌之前修改其值。例如,如果我撥打@ product.brand,我想獲得這是品牌,而不是this_is_a_brand。Ruby on Rails - 我可以在調用屬性值之前修改它的值嗎?
5
A
回答
9
我會建議使用,而不是read_attribute
和write_attribute
方括號語法([]
和[]=
)。方括號語法較短,並且designed to wrap the protected read/write_attribute methods。
def brand
original = self[:brand]
transform(original)
end
def brand=(b)
self[:brand] = reverse_transform(b)
end
0
在您的模型中,您可以覆蓋方法調用brand
。
def brand
#code to modify the value that is stored in brand
return modified_brand
end
這將允許它被存儲爲this_is_a_brand。但是,它會被歸爲「這是一個品牌」。
7
不是直接訪問@屬性相反,你應該使用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
1
相關問題
- 1. Ruby on Rails - 我可以在保存之前修改數據嗎?
- 2. 我可以在Ruby on Rails中使用url_for前綴選項嗎?
- 3. 我可以在rails中使用JavaScript中的CSS屬性值嗎?
- 4. 可以hookUpUpdate/afterUpdate之前修改該值嗎?
- 5. 元素之前可以忽略屬性的高度值嗎?
- 6. 在Ruby on Rails中更改request.remote_ip的值
- 7. Ruby on Rails,訪問非永久屬性和屬性默認值
- 8. Ruby on Rails修改參考
- 9. Ruby on Rails,屬性的屬性總和
- 10. 如何使用模型中屬性的值? Ruby on Rails
- 11. Ruby on Rails,查看屬性
- 12. 在jRuby/ruby on rails中爲會話屬性指定布爾值
- 13. Ruby on Rails的,嵌套的屬性,以最高的屬性
- 14. 你可以在Ruby on Rails中手動「觸發」回調嗎?
- 15. 我可以修改字段的值以進行測試嗎?
- 16. 可以引用CSS屬性值嗎?
- 17. 嵌套屬性在Ruby on Rails的
- 18. 我可以在Elmah記錄它們之前更改異常嗎?
- 19. 是否可以推遲一個屬性的值,但之前使用它?
- 20. Ruby on rails:選擇帶默認值屬性的選項菜單
- 21. Ruby on Rails - 我可以從Windows中的批處理例程調用Controller:Method嗎?
- 22. 我可以使用Ruby on Rails渲染一個haml模板嗎?
- 23. 我可以避免在Ruby on Rails中轉換數組嗎?
- 24. Ruby on Rails和db:fixtures:load - 它可以忽略某些模型嗎?
- 25. XSLT修改屬性值
- 26. 相對修改屬性值
- 27. 我可以在迭代時修改C++容器的值嗎?
- 28. 我們可以修改iOS中的UIViewController屬性嗎?
- 29. 我可以訪問修改過的屬性mulltiple jvms嗎?
- 30. iOS - 我可以修改iPhone中的屬性列表文件嗎?
我試過了,但我怎麼引用「內部」的品牌? – sker 2008-10-08 07:26:37
好的,我明白了。屬性存儲在@attributes中,所以我可以在方法中調用@attributes ['brand']。謝謝你的幫助。 – sker 2008-10-08 07:51:06