我有一个应用程序,我希望在将用户输入保存到数据库之前对其进行清理。
我可以轻松地在所有模型中添加一个函数clean
并使用before_validation :clean
调用它,但我的函数clean
是通用的。
我想知道它是否存在为应用程序中的所有模型验证调用此函数的方法,只需声明一次。
我已经做了一些研究,但是我找不到答案,这让我感到困扰,在我的所有模型中重复这个函数和before_validation它不是很干。
提前感谢您的回复。
干杯。
答案 0 :(得分:1)
确定!我认为您可能希望使用超级模型来进行一些继承,因为在活动记录库中注入对您自己来说可能是危险的,因此如果您有一个超级模型,该模型从ActiveRecord基础进行验证,之后,您创建其他模型下降这个,你将对所有这些都进行验证,而无需再次进行验证。
class SuperModel < ActiveRecord::Base
#This if for avoid single table inheritance
self.abstract_class = true
#-------------------------------------------------------------------------------
before_validation :clean
end
class Example < SuperModel
#this will have the before_validation :clean
end
答案 1 :(得分:0)
我认为你想扩展Active记录验证... 看看这个: Adding custom validations to ActiveRecord module via extend?