validator validations validates validate rails method greater_than custom create ruby-on-rails ruby validation model

ruby-on-rails - validations - rails validates greater_than



Los rieles forman un puente condicional de validaciĆ³n (4)

Tengo un modelo de rieles que valida la unicidad de 2 valores de formulario. Si estos 2 valores no son únicos, los errores de validación se muestran y el botón "enviar" se cambia a "reenviar". Quiero permitir que un usuario haga clic en el botón "reenviar" y omita la validación del modelo. Quiero hacer algo como esto en la documentación de validación de rieles:

validates_uniqueness_of :value, :unless => Proc.new { |user| user.signup_step <= 2 }

pero no tengo un valor en mi modelo que pueda verificar ... solo los parámetros que tienen el valor "Reenviar".

¿Alguna idea sobre cómo hacer esto?


En mi opinión, esta es la mejor manera de hacerlo:

class FooBar < ActiveRecord::Base validates_uniqueness_of :foo, :bar, :unless => :force_submit attr_accessor :force_submit end

entonces, en su opinión, asegúrese de nombrar la etiqueta de envío como

<%= submit_tag ''Resubmit'', :name => ''foo_bar[force_submit]'' %>

De esta manera, toda la lógica está en el modelo, el código del controlador permanecerá igual.


No es positivo al respecto, pero podría intentar agregar un attr_accessor a su modelo para mantener si el formulario se envió antes o no.

solo agrega

attr_accessor :submitted

a su modelo y verifíquelo en sus validaciones.


Simplemente puede mirar el botón de enviar para determinar si desea realizar las validaciones.

def form_method case params[:submit] when "Submit" ''Do your validation here'' when "Resubmit" ''Do not call validation routine'' end end


Prueba esto:

Rails 2: Model.save(false)
Rails 3: Model.save(:validate => false)

Omite las validaciones (aunque todas ellas).