Rails 3.1:通过关系在has_many的连接表上自定义validation消息?
我有一个Meal
模型has_many :foods, :through => :servings
。 Meal
还:
accepts_nested_attributes_for :servings, :allow_destroy => true validates_associated :servings
Serving
模型有一个名为serving_amount
的字段和一个名为amount_recorded
的字段。 在Serving
模型中,我目前使用此validation:
validates :serving_size, :numericality => {:greater_than => 0}, :if => :amount_recorded?
validation失败时返回的消息很糟糕。 事实上,每餐可能有多份食物。
如何创建引用服务大小无效的食物名称的自定义validation消息? 例如,我想说,“你为西瓜输入了一个无效的服务大小”,如果amount_recorded
为一个name
西瓜的Food
的服务是真的,validation失败。
我会尝试validates_each
方法。 在调用方法时,您将传递一个块,该块将传递记录实例(来自文档 ):
validates_each :first_name, :last_name do |record, attr, value| record.errors.add attr, 'starts with z.' if value.to_s[0] == zz end
这意味着您可以访问任何记录属性,包括名称,并轻松构造错误消息。