Ruby on rails 未拾取Rails MonkeyPatch更改
我正在尝试在实现中使用“MonkeyPatch”控制器,以便它可以处理第三个参数(“productname”) gem中的原始activate方法读取Ruby on rails 未拾取Rails MonkeyPatch更改,ruby-on-rails,ruby-on-rails-3,gem,monkeypatching,Ruby On Rails,Ruby On Rails 3,Gem,Monkeypatching,我正在尝试在实现中使用“MonkeyPatch”控制器,以便它可以处理第三个参数(“productname”) gem中的原始activate方法读取 def activate if Digest::MD5.hexdigest(params["security_data"] + SaasySimple.config.secret) == params["security_hash"] SaasySimple.config.model.activate( params['token']
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
我将monkeypatch放在config/initializers/sassysimple.rb中
User#activate
?e、 格雷普否,用户#激活仅由SaasySimple调用。我如何验证第一个问题?我可以看到它们是通过SaaSy发出的Post请求发送的,然后由SubscriptionController处理并发送到用户模型(在本例中也可以不发送)。然后尝试创建一个新的控制器,用您的方法扩展SaasySimple::SubscriptionController,不确定扩展ApplicationController是否能在monkey补丁中工作,因此没有必要认为新控制器的想法是好的-我将代码放在
类激活控制器
中。但这并没有解决问题-订阅中仍然出现了一个argument错误#activate:参数数目错误(2对3).bundle/gems/ruby/1.8/bundler/gems/SaasySimple-c41847cc58ac/app/controllers/saasy_simple/subscriptions_controller.rb:8:inactivate'`您是否使用monkeypatchSaasySimple.config.model.activate
获取3个参数?因为这就是错误所在。我认为config.model位只指向用户模型(在SaasySimple初始值设定项中有一个@model=User
)。我在上面编写的用户模型中有代码,看起来应该需要三个参数。
def self.activate(token, id, productname)
user = User.find( id )
user.token = token
user.status = 'active'
user.package = productname
user.save!
end