Ruby on rails 为整个应用程序定义一个清理功能

Ruby on rails 为整个应用程序定义一个清理功能,ruby-on-rails,validation,dry,sanitize,Ruby On Rails,Validation,Dry,Sanitize,我有一个应用程序,我想在将其保存到数据库之前对用户输入进行清理。 我可以轻松地在所有模型中添加一个函数clean,并在验证之前使用调用它:clean,但我的函数clean是通用的 我想知道是否存在一种方法,可以为应用程序中的所有模型验证调用此函数,并只声明一次 我做了一些研究,但我没有找到我的答案,这让我很困扰,在我所有的模型中重复这个函数和之前的验证,它不是很干 提前感谢您的回复 干杯。我想您希望扩展活动记录验证。。。 看看这个: 好的!我认为您可能需要使用超级模型来进行一些继承,因为在act

我有一个应用程序,我想在将其保存到数据库之前对用户输入进行清理。 我可以轻松地在所有模型中添加一个函数
clean
,并在验证之前使用
调用它:clean
,但我的函数
clean
是通用的

我想知道是否存在一种方法,可以为应用程序中的所有模型验证调用此函数,并只声明一次

我做了一些研究,但我没有找到我的答案,这让我很困扰,在我所有的模型中重复这个函数和之前的验证,它不是很干

提前感谢您的回复


干杯。

我想您希望扩展活动记录验证。。。 看看这个:
好的!我认为您可能需要使用超级模型来进行一些继承,因为在active record base中的注入可能会对您自己造成危险,所以如果您有一个超级模型,它是通过验证从ActiveRecord base中派生出来的,你创建了其他的模型,你将对所有的模型进行验证,而无需再次编写验证

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
class超级模特
可能重复您能否举例说明为什么需要清理输入?默认情况下,当您向用户显示时,输入被视为不安全的(您必须调用“raw”来显示任何html标记)。在显示时,输入被清除,但我想在保存到数据库之前清除它谢谢帮助。看起来很有趣,但即使在这种情况下,我也必须声明在所有模型中使用验证。我原以为我可以对所有模型进行自动验证,而不必在每个模型中声明。这似乎正是我要寻找的,但按照您所说的定义返回错误:
uninitialized constant SuperModel
有什么想法吗?Okkkayyy!我很笨。这太完美了!这正是我想要的。非常感谢你,你真有魔力!