¿Hay alguna manera de encasillar automáticamente los valores que se almacenan utilizando ActiveRecord :: Base.store?ActiveRecord :: Base.store autocasting automático
Tome este ejemplo totalmente impracticable:
class User < ActiveRecord::Base
store :settings, accessors: [ :age ]
end
user = User.new(age: '10')
user.age # => '10'
Sé que sólo puede reemplazar el método de lectura para la edad para convertirlo en un entero, pero tenía curiosidad por si había una manera de hacerlo sin papeles.
Tratando de evitar esto:
class User < ActiveRecord::Base
store :settings, accessors: [ :age ]
def age
settings[:age].to_i
end
end
user = User.new(age: '10')
user.age # => 10
actualización
buscando algo como:
class User < ActiveRecord::Base
store :settings, accessors: {:age => :to_i}
end
O:
class User < ActiveRecord::Base
store :settings, accessors: {:age => Integer}
end
Gracias por la respuesta, pero esto no es exactamente lo que estaba buscando. Esperaba que hubiera algo integrado en el método DSL que me permitiera establecer los valores predeterminados. –
Creo que va contra el punto de hash en el que puede poner cualquier cosa ... pero mire a su alrededor n buena suerte – AJcodez
De acuerdo, y es un abuso total de ActiveRecord y las bases de datos relacionales. Era más una cosa de curiosidad, supongo. –