Rails MonkeyPatch更改没有被提取

时间:2013-05-27 14:52:20

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

我正在尝试在我的实现中使用'MonkeyPatch'this控制器,以便它可以处理第三个参数('productname')。

gem中的原始activate方法读取

def activate
  if Digest::MD5.hexdigest(params["security_data"] + SaasySimple.config.secret) == params["security_hash"]
    SaasySimple.config.model.activate( params['token'], params['id'] )
  end
end

我的整个新文件放在lib / monkeys / sassysimple.rb中,读取

module SaasySimple
  class SubscriptionsController < ApplicationController
    def activate
      if Digest::MD5.hexdigest(params["security_data"] + SaasySimple.config.secret) == params["security_hash"]
        SaasySimple.config.model.activate( params['token'], params['id'], params['productname'] )
      end
    end
  end
end

这不起作用 - 我仍然收到subscriptions#activate (ArgumentError) "wrong number of arguments (2 for 3)"错误,我认为这是因为我的用户方法(见下文)期待productname而不是从联合国获取-monkeypatched版本。有人能告诉我为什么把文件放在lib中不起作用?谢谢!

这是用户方法:

  def self.activate(token, id, productname)
    user = User.find( id )
    user.token = token
    user.status = 'active'
    user.package = productname
    user.save!
  end

2 个答案:

答案 0 :(得分:0)

我将monkeypatch放入config / initializers / sassysimple.rb

答案 1 :(得分:0)

  • 您是否确认控制器确实看到了所有三个参数?
  • 代码中的其他地方是否User#activate被调用了?例如grep for it。