update rails generate create belong association and ruby-on-rails ruby model attributes

ruby-on-rails - generate - ruby and rails documentation



Ruby on Rails-¿Puedo modificar el valor de un atributo antes de que se llame? (4)

Digamos que tengo este modelo llamado Producto con un campo llamado marca . Supongamos que los valores de la 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 This is a Brand , en lugar de this_is_a_brand .


En lugar de acceder a @attributes directamente, debe usar 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


En su modelo puede anular la brand llamada de método.

def brand #code to modify the value that is stored in brand return modified_brand end

Esto permitirá que se almacene como this_is_a_brand. Sin embargo, será devuelto como "esta es una marca".



Como la última respuesta se publicó hace 7 años, contribuiré con lo que la API de Rails sugiere actualmente.

def brand super.humanize end

Humanize convierte ''this_is_a_brand'' en ''This is a brand''