1

3 番目のパラメーター ('productname') を処理できるように、実装でこのコントローラーを 'MonkeyPatch' しようとしています。

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いるが、モンキー パッチが適用されていないバージョンから取得していないために発生したと考えられます。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
  • コントローラーが 3 つのパラメーターすべてを実際に認識していることを確認しましたか?
  • User#activateコード内の他の場所で呼び出されていますか? たとえば、それをgrepします。
于 2013-05-27T15:00:09.640 に答える