我有一个MenuTable模型的名称字段的值,我想使用的validate_pressence_of
消息,而是名称字段的值在名场,我得到了模型如何获得一个模型
代码:
class MenuTable < ActiveRecord::Base
validates_presence_of :type, :if => lambda {(field.blank?)}, :message => "Error in " + self.name
end
我有一个MenuTable模型的名称字段的值,我想使用的validate_pressence_of
消息,而是名称字段的值在名场,我得到了模型如何获得一个模型
代码:
class MenuTable < ActiveRecord::Base
validates_presence_of :type, :if => lambda {(field.blank?)}, :message => "Error in " + self.name
end
如果一切都失败了,你总是可以做一个自定义的十岁上下的验证这样的:
validate :type_presence_with_message
def type_presence_with_message
return unless field.blank?
if type.blank?
errors.add(:type, "Error in #{name}")
end
end
#app/models/menu_table.rb
class MenuTable < ActiveRecord::Base
validates :type, presence: { message: "cannot be blank" }, if: "field.blank?"
end
根据Rails文档,您可以拨打local 如果需要它的存在,值如何存在?我的坏,对不起。%{value}
variable来定制您的错误消息,其中即特定字段。
You can also pass a string到您的if
逻辑(看起来更好的IMO)。
我知道这并不能解决您的问题(您想调用另一个模型属性)。
所以我做了一些测试,并发现了一些有趣的想法...
首先,validates
方法似乎只对通过相关的属性:
这似乎使用error message interpolation给你一组3个(或4个)对象来呼叫:
- %{模型}
- %{属性}
- %{值}
- %{数}(只在数字实例)
这意味着,如果你想访问来自对象的其他值,您必须使用一种方法来授予对当前模型实例值的访问权限; @Sergio Tulentsev
的答案做得很好,但我想找到一种方法来使用在线validates
。
This answer很好地解释了:
验证的作用域是类而不是对象要验证
这意味着你将不得不使用@Sergio Tulentsev
的回答创建一个自定义验证(其范围在对象上)。
是的,问题是使用name属性。相反,**名称字段**的值,我得到类/模型的名称。所以我创建了一个方法,'self.name' /'“#{name}”'现在正在工作。 –
这是在一个自定义验证器? –
是的,从上面的答案^ _ ^ –