Necesito ayuda con mi modelo ActiveRecord. Tengo validaciones basadas contexto (MIS) utilizando las opciones de contexto build-in para las validaciones:Contexto de validación de rieles
validates :foo, :on => :bar, :presence => true
model = Model.new
model.foo = nil
model.valid? # => true
model.save # works as expected
model.valid?(:bar) # => false
model.save(:context => :bar) # fails and returns false
pero usando mi modelo en un accepts_nested_attributes_for :model
y llamando parent.save
falla (la validación se llama y devuelve falso), cualquier sugerencia o soluciones ?
¿Todavía no tiene respuesta? Para explicar más sobre mi problema: Tengo un modelo llamado Form
que tiene muchos Field
s. Los usuarios deben ver los errores de validación en el envío, pero el formulario debe guardarse de todos modos (con y sin errores). Existen diferentes tipos de Field
s, cada uno con validaciones globales (para garantizar la consistencia de la base de datos) y sus propias validaciones específicas definidas por el usuario (para validar los datos ingresados por el usuario). Así que mis Field
s buscan alguna manera de esa manera:
# Global validations, to ensure database consistency
# If this validations fail, the record should not be saved!
validates_associated :form, :on => :global
...
# Specific user-defined validations
# If this validations fail, the record should be saved but marked as invalid. (Which is done by a before_save filter btw.)
def validate
validations.each do |validation| # Array of `ActiveModel::Validations`, defined by the user and stored in a hash in the database
validation.new(:on => :specific).validate(self)
end
end
En mi controlador:
# def create
# ...
form.attributes = params[:form]
form.save!(:global)
form.save(:specific)
es algo parecido posible en los carriles utilizando la funcionalidad integrada? Por cierto, este no es mi código real, que es bastante complicado. Pero espero, ustedes entenderán la idea.
No, lo siento por el error tipográfico. Quise decir, por supuesto, 'accept_nested_attributes_for'! Gracias por cierto :) –
Creo que el contexto de validación ': bar' está mal, pero': on =>: create' o ': on =>: update' debería estar bien. – Danil