Ürün adlı bu modelin markalı numaralı bir alana sahip olduğunu varsayalım. markasının markasının değerlerinin this_is_a_brand biçiminde saklandığını varsayalım. Modelde (veya başka bir yerde), çağrılmadan önce markasının değerini değiştirmeme izin veren bir yöntem tanımlayabilir miyim. Örneğin, @ product.brand'u çağırırsam, almak istiyorum. Bu, bu_is_a_brand yerine bir Marka markasıdır.Ruby on Rails - Bir özniteliğin değerini çağırılmadan önce değiştirebilir miyim?
5
A
cevap
9
yerine read_attribute
ve write_attribute
ait köşeli ayraç sözdizimi ([]
ve []=
) kullanarak öneriyoruz. Kare parantez sözdizimi daha kısadır ve designed to wrap the protected read/write_attribute methods. Geçen cevap 7 yıl önce gönderilmiş gibi
def brand
original = self[:brand]
transform(original)
end
def brand=(b)
self[:brand] = reverse_transform(b)
end
0
Modelinizde, brand
yöntem çağrısını geçersiz kılabilirsiniz.
def brand
#code to modify the value that is stored in brand
return modified_brand
end
Bu, this_is_a_brand olarak saklanmasına izin verecektir. Ancak, "bu bir marka" olarak iade edilecektir.
7
Aksine doğrudan @attributes erişen yerine, read_attribute
ve write_attribute
kullanmalıdır:
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
İlgili konular
- 1. Ruby & Ruby on Rails
- 2. Ruby on Rails örneği
- 3. Ruby on Rails Dragonfly
- 4. Ruby on Rails
- 5. Ruby vs Ruby On Rails
- 6. Ruby on Rails ilişkiler
- 7. Ruby on Rails
- 8. Sadece Ruby on Rails
- 9. Ruby on Rails
- 10. Ruby on Rails
- 11. Ruby on Rails IE
- 12. Ruby on Rails Switch
- 13. Ruby on Rails,
- 14. Docsplit Ruby on Rails
- 15. Flexbox'ı Ruby on Rails
- 16. Ruby On Rails onlu sütun
- 17. I18n Ruby on Rails gönder
- 18. Alan Doğrulama Ruby on Rails
- 19. Ruby on Rails web sitemin yayınlanmadan önce nelere dikkat etmeliyim?
- 20. Button on Ruby on Rails bozuk rota
- 21. Ruby on Rails - Küresel Değişken?
- 22. Ruby on Rails: form select
- 23. Ruby On Rails:: alt model
- 24. Ruby On rails projesiz testler
- 25. Oturumlar geçiyor. Ruby on Rails
- 26. Filtreleme Sonuçları - Ruby on Rails
- 27. Ruby on Rails ActiveRecord: çoğullaşma
- 28. Ruby on Rails - Farklı sınıf
- 29. Form Üzerine Ruby on Rails
- 30. Metin alanına Ruby on Rails
Denedim 'Bu bir markadır', ama nasıl "iç" marka başvuru? – sker
Tamam, anladım. Öznitelikler @attributes'ta saklanır, böylece yöntem içinde @attributes ['brand'] 'ı arayabilirim. Yardım ettiğin için teşekkür ederim. – sker