2009-09-22 78 views
0

我有一個包含要創建產品對象的數據的表單。該產品具有以下這樣一個形象的關係:當對象B失敗時,如何使對象A失敗驗證

has_one :image 

在我看來,我有一個文件,輸入如下所示:

<%= f.file_field :image_file %> 

在我的產品型號,我有:

def image_file=(input_data) 
    self.image = Image.new({:image_file => input_data}) 
    end 

圖像模型知道如何處理input_data並具有驗證規則。 問題是,如果驗證失敗,我的產品會在沒有圖像的情況下創建。

如何驗證錯誤波及到產品,以便產品完全不會被創建,因此我可以在窗體上顯示錯誤?

因爲我是Rails的新手,如果我做得不對,請告訴我。

回答

0

我結束了創建一個自定義的驗證這樣做:

validate :associated_image 

這是方法:

def associated_image 
    if image && !image.valid? 
    image.errors.each { |attr, msg| errors.add(:image_file, msg)} 
    end 
end 

感謝加雷思指着我到validates_associated,但它的問題是,你失去了關聯對象的實際錯誤信息。

1

您可以使用validates_associated

+0

謝謝,這似乎是我正在尋找。但是,它輸出一個默認的錯誤消息,它似乎並不像我可以從失敗的驗證中得到實際的錯誤消息,我可以嗎? – JRL 2009-09-22 22:51:04