2011-03-08 32 views
0

我有一個名爲'dropbox'的模型,它擴展了'程序'。方案具有以下驗證:ruby​​驗證錯誤消息需要更改

validates_presence_of :network_id, :name 

,所以當你嘗試創建一個下拉框,讓這些了,你(不出所料)獲得以下vaidation消息:

* Network can't be blank 
* Name can't be blank 

問題是,在上下文'dropbox',我們稱之爲'網絡''類別'。我怎樣才能改變網絡不能爲空錯誤消息類別不能爲空

---編輯---

我已經試過:

activerecord: 
    attributes: 
    dropbox: 
     network_id: Category 

但這沒有任何影響。但是,這個作品:

activerecord: 
    attributes: 
    programme: 
     network_id: Category 

但會改變網絡的名稱無處不在(我只是需要它爲dropbox更改)。我相信這是因爲network_id是程序的一個屬性,dropbox只是擴展了它,但必須有一個方法!

回答

2

您可以使用區域設置爲:

activerecord: 
    attributes: 
    dropbox: 
     network: Category 

棒,在配置/區域設置/ en.yml更改屬性的顯示名稱。在創造一些錯誤消息:

errors: 
    messages: 
    dropbox: 
     cant_be_blank: Oops! 

然後添加一個消息選項模型:

validates_presence_of :network_id, :name, :message => I18n.t('activerecord.errors.messages.dropbox.cant_be_blank') 

地段的詳細信息,可以發現here

+0

從中,我得到:**網絡哎呀!名字糟糕! **另外,這是否意味着所有程序(不僅僅是Dropbox子類)都會得到自定義錯誤信息..? – tiswas 2011-03-08 18:50:53

+0

我更正了目錄錯字。基本上任何屬性都將使用您輸入的名稱而不是實際名稱(network_id或其他任何名稱)。請查看我發佈的鏈接。希望這可以幫助你理清細節。 – mikewilliamson 2011-03-08 18:53:07

+0

activerecord :: errors :: messages :: dropbox的嵌套爲您提供了一組Dropbox模型的消息。當你想爲另一個模型設置一些時,使用activerecord :: errors :: messages :: othermodel。將Oops改爲任何你想要的信息。 – mikewilliamson 2011-03-08 19:22:57