Tengo un modelo con un atributo serializado (matriz). Me gustaría validar el modelo solo si cada miembro de la matriz está incluido dentro de las opciones predeterminadas.¿Cómo realizar una validación de inclusión en un atributo serializado?
Ejemplo: Tengo un modelo Persona que tiene un atributo "estado de ánimo". Los usuarios pueden tener más de un estado de ánimo, pero cada estado de ánimo debe ser "feliz", "triste", "cansado" o "enojado".
El modelo sería algo como esto:
class Person < ActiveRecord::Base
MOODS = %w[happy sad tired angry]
# validates :inclusion => { :in => MOODS }
attr_accessible :mood
serialize :mood
end
La validación comentado no funciona. ¿Hay alguna forma de hacerlo funcionar o necesito una validación personalizada?
(. Nota: Yo no quiero crear un modelo del estado de ánimo por separado)
Comprobar esta documentación, http://guides.rubyonrails.org/active_record_validations_callbacks.html#inclusion. No es necesario crear validaciones personalizadas para eso. – Chamnap
en atributos serializados, de lo contrario, el valor serializado se comprueba para su inclusión, lo que significa que mood = [cansado, enojado] fallará ya que MOODS.include? (Mood) es falso –
Ah, no vi el método de serialización. Tu respuesta debería ser correcta entonces. – Chamnap