SORU
8 HAZİRAN 2010, Salı


Nasıl doğrulama olmadan özniteliklerini güncellemek için

Onun doğrulaması ile bir modeli var, ve daha önce nesne doğrulamadan bir nitelik güncelleme olamaz öğrendim.

Ben zaten her doğrulama satır sonunda on => :create sözdizimi eklemek için çalıştı, ama aynı sonuçları aldım.

Duyuru modelim aşağıdaki doğrulamaları var:

  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

Benim komisyon görev aşağıdakileri yapar:

  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

Bu çıkışı bu model için tüm doğrulama istisna atar.

Model doğrulama olmadan bir öznitelik güncelleştirme isteyen var mı?

CEVAP
8 HAZİRAN 2010, Salı


KULLANIM update_attribute yerine update_attributes

Güncellemeleri tek bir öznitelik ve normal doğrulama prosedür geçmeden kaydeder.

if a.update_attribute('state', a.state)

:- Not 'update_attribute' kod sizin için çalışmak bence söz vermiş. bir seferde sadece tek bir öznitelik güncelleştirme

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS

    ASUS

    22 EKİM 2005
  • Bryan Adams

    Bryan Adams

    30 Mart 2006
  • movies95

    movies95

    27 Kasım 2006