2013-05-27 3 views
1

Я пытаюсь использовать контроллер MonkeyPatch this в моей реализации, чтобы он мог обрабатывать третий параметр ('productname').Rails Изменения в MonkeyPatch не собираются

оригинальный метод 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/обезьяны/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, но не получает его из версии без обезьяны. Может ли кто-нибудь сказать мне, почему размещение файла в lib не работает? Благодаря!

Это метод пользователя:

def self.activate(token, id, productname) 
    user = User.find(id) 
    user.token = token 
    user.status = 'active' 
    user.package = productname 
    user.save! 
    end 

ответ

0

Я бы поставил monkeypatch в конфиге/Инициализаторы/sassysimple.rb

+0

Я тоже это пробовал ... Безусловно, я боюсь. – Nick

+0

Затем попробуйте создать новый контроллер, который расширяет SaasySimple :: SubscriptionsController с помощью вашего метода. – wrdevos

+0

Кроме того, не уверен, что расширение ApplicationController работает в патче обезьяны, это необязательно. – wrdevos

0
  • Вы проверили, что контроллер действительно видит все три Params?
  • Is User#activate называется где-нибудь еще в коде? например grep для этого.
+0

Нет, пользователь # активируется только SaasySimple. Как я могу проверить первый вопрос? Я вижу, что они отправляются с помощью запроса Post, сделанного SaaSy, который затем обрабатывается контроллером Subscriptions и отправляется в пользовательскую модель (или нет, в этом случае). – Nick

Смежные вопросы