Ciao,
e’ possibile in Rails ridefinire il tipo (la classe) di un attributo di
un modello (ActiveRecord).
Mi spiego: il mio modello ha l’attributo color_code che è di classe
stringa (colore rgb, 6 caratteri), ma vorrei fare in modo che venga
“castato” a una classe definita da me, esempio Colore, in modo che alle
sue istanze possa applicare il metodo “schiarisci”.
Ciao,
e’ possibile in Rails ridefinire il tipo (la classe) di un attributo di
un modello (ActiveRecord).
Mi spiego: il mio modello ha l’attributo color_code che è di classe
stringa (colore rgb, 6 caratteri), ma vorrei fare in modo che venga
“castato” a una classe definita da me, esempio Colore, in modo che alle
sue istanze possa applicare il metodo “schiarisci”.
Io sovrascriverei il metodo color_code:
class Something < ActiveRecord::Base
def color_code
Colore.new(read_attribute(:color_code))
end
end
Io tuttavia te lo sconsiglio, mi sembra più sicuro e semplice definire
dei metodi con nomi diversi dall’attributo (ad esempio color), e poi
usare sempre quei metodi nel resto del codice; qualcosa tipo:
class SomeModel < ActiveRecord::Base
def color
color_code && Color.new(color_code)
end
def color=(some_color)
case some_color
when String
self.color_code = some_color
when Color
self.color_code = some_color.code
when nil
self.color_code = nil
else
raise ArgumentError.new(‘some appropriate message’)
end
end
end
pietro
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.