rails自定义验证器 - 添加到模型或控制器中的错误?

时间:2011-11-17 15:32:03

标签: ruby-on-rails ruby model validation

我看到模型中使用的自定义验证器(好)但我也看到验证器本身添加到记录错误对象。
例如我知道了 (改变的例子)

class Title < ActiveRecord::Base
   # implement the method called during validation
   def validate_each(record, attribute, value)
     record.errors[attribute] << 'must be Mr / Mrs / Dr.' unless ['Mr.', 'Mrs.', 'Dr.'].include?(value)
   end
end

这感觉有点像应该在控制器中完成的状态,验证应该只返回true / false,但可能不会。

2 个答案:

答案 0 :(得分:2)

我认为这将是一个案例的事情。通常,验证消息确实不会在控制器中发生。当您使用预制验证器时,您可以通过操作.yml文件来不同地指定消息,并且这样做可以调整内容并在模型下添加值,而不是控制器。

事实上,我建议始终将自定义的消息放入locales .yml文件

我可以看到一个参数,用于在控制器中添加更多常规失败消息。

答案 1 :(得分:2)

我倾向于这种模式:

errors.add[:name] << :invalid_honorific

模型设置的错误是符号(更像是错误代码),然后由视图层处理,.yml任何文件。这样可以避免在模型中放置过多的表示层内容。