validar rails formularios formulario ruby-on-rails activerecord ruby-on-rails-3.2

ruby on rails - formularios - Valores predeterminados de la base de datos de Rails y validación del modelo para campos booleanos



formularios en ruby on rails (3)

En un modelo de Rails tengo un atributo is_subscriber , cuando construí una migración de db para agregar esta columna a la base de datos, especifiqué que el valor predeterminado fuera falso:

t.boolean "is_subscriber", :default => false

También especifiqué en el modelo que este atributo debe estar presente:

validates :is_subscriber, presence: true

Entonces, ¿por qué obtengo este error cuando creo una instancia de modelo sin especificar este atributo?

2012-05-08T21:05:54+00:00 app[web.1]: ActiveRecord::RecordInvalid (Validation failed: Is subscriber can''t be blank):


Creo que es mejor incluir esto en un validador personalizado.

en /app/validators/is_boolean_validator.rb

class IsBooleanValidator < ActiveModel::EachValidator def validate_each(record, attribute, parameters) if !parameters.in? [true,false] record.errors[attribute] << ''This must be true or false.'' end end end

luego debe asegurarse de que esto esté cargado agregando lo siguiente a /config/application.rb

config.autoload_paths += %W["#{config.root}/app/validators/"]

(no olvide reiniciar su servidor para cargar esto)

A continuación, puede validar más claramente con

validates: :field1, field2, is_boolean: true


De here

Si desea validar la presencia de un campo booleano (donde los valores reales son verdaderos y falsos), querrá usar validates_inclusion_of: field_name,: in => [true, false] Esto se debe a la forma en que Object # blank está en blanco? maneja valores booleanos. falso.blanco? # => verdadero

O en Rails3 camino

validates :field, :inclusion => {:in => [true, false]}


He resuelto esto con:

validates_presence_of :is_subscriber, :if => ''is_subscriber.nil?''