Tengo un modelo con sus validaciones, y descubrí que no puedo actualizar un atributo sin validar el objeto antes.Cómo actualizar los atributos sin validación
Ya traté de agregar la sintaxis on => :create
al final de cada línea de validación, pero obtuve los mismos resultados.
Mi modelo de anuncio tiene las siguientes validaciones:
validates_presence_of :title
validates_presence_of :description
validates_presence_of :announcement_type_id
validate :validates_publication_date
validate :validates_start_date
validate :validates_start_end_dates
validate :validates_category
validate :validates_province
validates_length_of :title, :in => 6..255, :on => :save
validates_length_of :subtitle, :in => 0..255, :on => :save
validates_length_of :subtitle, :in => 0..255, :on => :save
validates_length_of :place, :in => 0..50, :on => :save
validates_numericality_of :vacants, :greater_than_or_equal_to => 0, :only_integer => true
validates_numericality_of :price, :greater_than_or_equal_to => 0, :only_integer => true
Mi tarea rastrillo hace lo siguiente:
task :announcements_expiration => :environment do
announcements = Announcement.expired
announcements.each do |a|
#Gets the user that owns the announcement
user = User.find(a.user_id)
puts a.title + '...'
a.state = 'deactivated'
if a.update_attributes(:state => a.state)
puts 'state changed to deactivated'
else
a.errors.each do |e|
puts e
end
end
end
Esto arroja todas las excepciones de validación para ese modelo, en la salida.
¿Alguien sabe cómo actualizar un atributo sin validar el modelo?
Esto funcionó! Gracias. Marcaré esto como respondido tan pronto como pueda hacerlo. –
Puede usar guardar (falso) sin validación – Dzmitry
Hmm, pero ¿hay alguna forma de analizar los params [: instance] como lo hace update_attributes? – Dogweather