使用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