我试图按照How to Implement Basic Defensio Spam Protection in 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
。我应该如何更改上面的代码块以使其工作w / comment.build_defensio()
?
了解更多信息
如果您需要查看我在Github上托管的任何源代码。
基本上我正在做的是提交评论(Skatepark :: Comment),在成功保存后DefensioJob
被排队等候Delayed::Job.enqueue(DefensioJob.new(self.id))
。在defensio工作中,我正在尝试创建并保存新的Skatepark::Comment::Defensio
记录。
答案 0 :(得分:1)
您可以覆盖模型的初始化程序,如此
def initialize(attributes = {})
super(clean!(attributes))
end