2013-05-27 44 views
1

我試圖在我的實現中'MonkeyPatch'this控制器,以便它可以處理第三個參數('productname')。未找到Rails MonkeyPatch更改

在寶石原激活方法讀取

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 /猴/ 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 

這不是工作 - 我m仍然得到了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 

回答

0

我把猴補丁在配置/初始化/ sassysimple.rb

+0

我也試過這個...無濟於事我害怕。 – Nick

+0

然後嘗試創建一個新的控制器,用您的方法擴展SaasySimple :: SubscriptionsController – wrdevos

+0

此外,不確定是否擴展ApplicationController在猴子補丁中工作,這是不必要的 – wrdevos

0
  • 您是否已經驗證控制器真的看到所有三個PARAMS?
  • User#activate在代碼的其他地方調用嗎?例如grep的。
+0

不,用戶#激活僅由SaasySimple調用。我將如何驗證第一個問題?我可以看到它們是通過SaaSy發佈的Post請求發送的,然後由SubscriptionsController處理併發送到用戶模型(在這種情況下不是)。 – Nick