0

我正在使用Ruby on Rails 3.1.0和Paperclip gem。我想改變正常行爲來驗證錯誤消息並將其添加到類對象。如何更改正常驗證行爲以便將消息添加到自定義錯誤鍵?

也就是說,User類的無效實例

#<ActiveModel::Errors:0x0000010166cfb8 @base=#<User id: 1, firstname: "Sample firstname", lastname: "Sample lastname", avatar_file_name: "avatar_file.jpg", 
...>, @messages={:avatar_file_size=>["is too big"]}> 

我想有下面的輸出(注意(該:avatar_file_size錯誤是關係到回形針寶石)的:avatar_file_size錯誤哈希關鍵改爲:avatar):

#<ActiveModel::Errors:0x0000010166cfb8 @base=#<User id: 1, firstname: "Sample firstname", lastname: "Sample lastname", avatar_file_name: "avatar_file.jpg", 
...>, @messages={:avatar=>["is too big"]}> 

在幾句話,我想這樣做是改變錯誤哈希關鍵與由Paperclip gem生成的錯誤消息相關。

我該怎麼做?


也許就可以直接做,在存在於User模型validates方法,在這個時候是:

validates_attachment_size :avatar, 
    :less_than => 4.megabytes, 
    :message => "is too big" 

回答

0

可以提供一個選項叫做message覆蓋默認的消息。我假設你正在使用回形針寶石的尺寸驗證。

validates_attachment_size :avatar, :less_than => 5.megabytes, 
          :message => "is too big" 
+1

我不想更改驗證消息,但(從「:avatar_file_size」到「:阿凡達」)鍵名而正常情況下該消息將被插入陣列。 – Backo

+0

你不會在'avatar_file_size'列上寫驗證器(因爲它是Paperclip的元列)。你寫了驗證:頭像。正如我上面所顯示的那樣,'paperclip' gem提供了這個開箱即用的功能。 –

+0

我認爲你的具體問題可能通過上面的解決方案來解決。如果你想一般地改變字段名稱,那麼參考這個SO問題http://stackoverflow.com/questions/2521383。 –

相關問題