Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未拾取Rails MonkeyPatch更改_Ruby On Rails_Ruby On Rails 3_Gem_Monkeypatching - Fatal编程技术网

Ruby on rails 未拾取Rails MonkeyPatch更改

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']

我正在尝试在实现中使用“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'], 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'`您是否使用monkeypatch
    SaasySimple.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