2

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

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

我已经进行了一些研究,但我没有找到适合我的答案,这让我很困扰,在我的所有模型中重复该函数和 before_validation,它还不是很干燥。

预先感谢您的回复。

干杯。

4

2 回答 2

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
于 2013-04-04T16:12:47.637 回答
0

我想你想扩展活动记录验证......看看这个: 通过扩展向 ActiveRecord 模块添加自定义验证?

于 2013-04-04T14:41:11.720 回答