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