2013-07-01 16 views
10

Bir ray modelinde before_save yönteminde bir istisna eklemeye çalıştım ancak görünümde hata iletisi yok.Rails modeline nasıl hatalar eklenir?

Modeli:

before_save do 
    doing_some_stuff 
    begin 
     File.open('some_file', 'w+') do |file| 
     if file.write(file_content) 
      return true 
     else 
      return false 
     end 
     end 
    rescue => e 
     self.errors.add(:base, e.message) 
     return false 
    end 

Görünüm:

<%= @model.errors.any? %> 

Bu her zaman yanlıştır.

Modele nasıl hata mesajı eklerim?

DÜZENLEME: sorun

, yerine tekrar harekete kılma update_attribute fonksiyonu sonra bir yönlendirme vardı. Yardım için teşekkürler.

+1

"before_create" mantığını işlemek için bir yöntem oluşturmayı düşünmelisiniz. Bunun gibi 'before_create: do_stuff' –

+0

File.open'in bir istisna oluşturduğunu nereden biliyorsunuz? Açık bloğun içindeki bu ifadeden sadece yanlış bir şey döndürmekten emin değil misiniz? –

+0

Ben logfile logger.info üzerinden hata çıkış yapmıştı, hata kurtarma parçası – SonIcco

cevap

15

Bunu doğrulamada gerçekleştirmelisiniz, before_save'dan değil. before_save geri aramasına ulaştığınız zaman, kayıt geçerli kabul edilir.

validate do 
    doing_some_stuff 
    begin 
    File.open(some_file, 'w+') do |file| 
     if !file.write(file_content) 
     self.errors.add(:base, "Unable to write #{some_file}") 
     end 
    end 
    rescue => e 
    self.errors.add(:base, e.message) 
    end 
end 
+0

aynı sorun, kurtarma bölümünden kaldırılan görünümde hata mesajı yok – SonIcco