使用lambda,但至少在最近版本的Rails,ActiveRecord的將嘗試在兩個參數到拉姆達傳遞,它需要考慮這些。用一個簡單的例子,假設我們希望確保用戶名只包含字母數字字符:
validates_format_of :username, :with => /^[a-z0-9]+$/i,
:message => lambda{|x,y| "must be alphanumeric, but was #{y[:value]}"}
傳遞給拉姆達的第一個參數是一個奇怪的不那麼小符號,它會告訴機器人是很好的事錯在哪裏:
:"activerecord.errors.models.user.attributes.username.invalid"
(如果你通過上面的符號混淆,符號可以包含的不僅僅是字母,數字更多,並強調但是,如果他們這樣做,你必須把引號周圍,否則。 :activerecord.errors
貌似你試圖調用一個符號調用.errors
方法編號爲:activerecord
。)
第二個參數包含一個散列,其中的字段可幫助您「糾正」錯誤響應。如果我嘗試添加一個像「Superstar !!!」標點符號的用戶名,它會看起來像這樣:
{
:model=>"User",
:attribute=>"Username",
:value=>"Superstar!!!"
}
我假設'事件'是另一個activemodel類? – 2010-11-12 19:02:53
舉個例子。不是真正的項目 – murato 2010-11-12 21:38:14