Digamos que tengo este modelo llamado Producto con un campo llamado marca. Suponga que los valores de marca se almacenan en el formato this_is_a_brand. ¿Puedo definir un método en el modelo (o en cualquier otro lugar) que me permita modificar el valor de la marca antes de que se llame? Por ejemplo, si llamo a @ product.brand, quiero obtener Esta es una marca, en lugar de this_is_a_brand.Ruby on Rails: ¿Puedo modificar el valor de un atributo antes de invocarlo?
5
A
Respuesta
9
Yo recomiendo usar la sintaxis de corchetes ([]
y []=
) en lugar de read_attribute
y write_attribute
. La sintaxis del corchete es más corta y 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
En su modelo puede anular la llamada al método brand
.
def brand
#code to modify the value that is stored in brand
return modified_brand
end
Esto permitirá que se puede almacenar como this_is_a_brand. Sin embargo, será devuelto como "esta es una marca".
7
en lugar de acceder directamente @attributes, se debe utilizar read_attribute
y 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
Cuestiones relacionadas
- 1. Ruby on Rails: ¿Puedo modificar los datos antes de guardarlos?
- 2. Ruby on rails: menú de opciones de selección con el atributo de valor predeterminado
- 3. Cambiar el valor de request.remote_ip en Ruby on Rails
- 4. Ruby on Rails field average?
- 5. Ruby vs. Ruby on Rails
- 6. Ruby on Rails Active Record Attribute Introspection
- 7. Usos de Ruby on Rails
- 8. Ruby on Rails will_paginate
- 9. Ruby on Rails enviar
- 10. Ruby on Rails Switch
- 11. Ruby on Rails: mostrar condicionalmente un
- 12. Docsplit Ruby on Rails
- 13. Ruby on Rails: descargable
- 14. Strip html from string Ruby on Rails
- 15. SSL con Ruby on Rails
- 16. Carga de archivos en Ruby on Rails
- 17. Ruby on Rails API Tutorial
- 18. I18n de enviar en Ruby on Rails
- 19. Copie un archivo en Ruby on Rails
- 20. Ruby on Rails - ¿Variables globales?
- 21. Columna decimal Ruby on Rails
- 22. Busting Ruby on Rails Myths
- 23. Ruby on Rails asociación polimórfica
- 24. Ruby on Rails + PostgreSQL: uso de secuencias personalizadas
- 25. Ruby on Rails I18n interpolation
- 26. Ruby on Rails content_tag options hash - ¿configura un atributo booleano html?
- 27. Ruby on Rails Debug Pregunta
- 28. Ruby on Rails - Método estático
- 29. Ruby on Rails Rake Error
- 30. Cómo dominar Ruby on Rails
lo he intentado, pero ¿cómo puedo hacer referencia a la marca "interno"? – sker
Ok, lo tengo. Los atributos se almacenan en @attributes para que pueda simplemente llamar a @attributes ['brand'] dentro del método. Gracias por tu ayuda. – sker