Rails 3 build_association

时间:2011-05-31 03:19:42

标签: ruby-on-rails ruby-on-rails-3

我试图按照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记录。

1 个答案:

答案 0 :(得分:1)

您可以覆盖模型的初始化程序,如此

def initialize(attributes = {})
  super(clean!(attributes))
end