我看到模型中使用的自定义验证器(好)但我也看到验证器本身添加到记录错误对象。
例如我知道了
(改变的例子)
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
,但可能不会。
答案 0 :(得分:2)
我认为这将是一个案例的事情。通常,验证消息确实不会在控制器中发生。当您使用预制验证器时,您可以通过操作.yml文件来不同地指定消息,并且这样做可以调整内容并在模型下添加值,而不是控制器。
事实上,我建议始终将自定义的消息放入locales .yml文件
我可以看到一个参数,用于在控制器中添加更多常规失败消息。
答案 1 :(得分:2)
我倾向于这种模式:
errors.add[:name] << :invalid_honorific
模型设置的错误是符号(更像是错误代码),然后由视图层处理,.yml
任何文件。这样可以避免在模型中放置过多的表示层内容。