Ruby on rails Rails 3.1:has\u many through关系的联接表上的自定义验证消息?
我有一个Ruby on rails Rails 3.1:has\u many through关系的联接表上的自定义验证消息?,ruby-on-rails,validation,ruby-on-rails-3.1,has-many-through,Ruby On Rails,Validation,Ruby On Rails 3.1,Has Many Through,我有一个套餐模式,有很多:食物,:通过=>:服务膳食另外: accepts_nested_attributes_for :servings, :allow_destroy => true validates_associated :servings 服务模型有一个名为服务金额的字段和一个名为记录金额的字段。在服务模型中,我当前使用此验证: validates :serving_size, :numericality => {:greater_than => 0}, :if =
套餐
模式,有很多:食物,:通过=>:服务
<代码>膳食另外:
accepts_nested_attributes_for :servings, :allow_destroy => true
validates_associated :servings
服务
模型有一个名为服务金额
的字段和一个名为记录金额
的字段。在服务
模型中,我当前使用此验证:
validates :serving_size, :numericality => {:greater_than => 0}, :if => :amount_recorded?
验证失败时返回的消息非常糟糕。每顿饭可能有多份,这一事实使情况更加复杂
我如何创建一个自定义验证消息,该消息引用的食品名称的服务大小是无效的?例如,我希望它说,“您为西瓜输入了无效的份量”,如果
记录的数量对于名称为的食物是真的,并且验证失败。我会尝试验证每个方法。调用该方法时,向其传递一个块,该块将被传递给记录实例(从):
这意味着您可以访问任何记录属性,包括名称,并轻松构造错误消息。我将尝试验证每个方法。调用该方法时,向其传递一个块,该块将被传递给记录实例(从):
这意味着您可以访问任何记录属性,包括名称,并轻松构造错误消息
validates_each :first_name, :last_name do |record, attr, value|
record.errors.add attr, 'starts with z.' if value.to_s[0] == zz
end