1

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

gem中的原始激活方法读取

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但没有从 un-monkeypatched 版本中获取它。有人能告诉我为什么将文件放在 lib 中不起作用吗?谢谢!

这是用户方法:

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

2 回答 2

0

I'd put the monkeypatch in an config/initializers/sassysimple.rb

于 2013-05-27T14:56:13.600 回答
0
  • 您是否已验证控制器确实看到了所有三个参数?
  • User#activate在代码中的其他任何地方调用?例如 grep 。
于 2013-05-27T15:00:09.640 回答