我正试图创建一些类似于如何在Rails中实现基本防御垃圾邮件保护的内容,但我遇到了一个问题。在文章中,他们有这样的东西:
def self.init(attributes)
self.new(clean!(attributes))
end
private
def self.clean!(attrs)
returning({}) do |cleansed_attributes|
attrs.each do |key, value|
cleansed_attributes.merge!(key.to_s.underscore => value)
end
end
end
然后他们呼叫DefensioResponse.init
。然而,在我的情况下,我的设置有点不同。我正在调用comment.build_defensio()
(我的模型被称为Defensio而不是DefensioResponse),并且似乎从未调用过self.init
。我应该如何更改上面的代码块,使其与comment.build_defensio()
一起工作?
有关更多信息
如果你需要查看我在Github上托管的任何源代码。
基本上,我正在做的是提交一个评论(Skatepark::comment),在成功保存DefensioJob
之后,它将与Delayed::Job.enqueue(DefensioJob.new(self.id))
一起排队。在防御工作的内部,我正试图创建并保存一个新的Skatepark::Comment::Defensio
记录。
您可以覆盖模型的初始值设定项,比如这个
def initialize(attributes = {})
super(clean!(attributes))
end