这可能是一个非常明显的问题,但我无法弄明白。在rails中是否有像场或模型过滤器这样的东西?类似于控制器中的before_filter概念的东西。在我的情况下,我们从表单中获取“时间”信息,需要在设置之前进行格式化和验证。我不想简单地在字段上应用验证器并返回错误,而是希望尽可能使用户友好,并尝试正确格式化数据。例如,在我的模型中输入类似的东西会很好:
before_filter :formatTimeField, :only=>[:timeField1, :timeField2...etc]
就像现在一样,我需要为每个字段指定mutator,这对我来说似乎有点傻。
有什么想法吗?如果我遗漏了一些重要信息,请告诉我。提前谢谢!
答案 0 :(得分:1)
查看before_validation
及其余ActiveRecord回调的文档。在记录创建/修改过程的各个阶段都会进行一系列调用:
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
在您描述的情况下,您可以调用before_validation
方法来尝试修复用户的输入,然后验证该修改后的数据。因此,如果您仍然无法执行任何操作,则可以将其踢回用户进行更正。
此外,RoR指南全面概述了不同的钩子:http://guides.rubyonrails.org/active_record_validations_callbacks.html#callbacks-overview。
希望这有帮助。