ClassMethods в контроллере, возвращающем NoMethodError

Я создал проблему в контроллерах/проблемах с именем report.rb.

В нем я создал модуль ClassMethods. Выглядит он так

module Reports
  extend ActiveSupport::Concern

included do
    require 'peddler'
    require 'csv'
end

module ClassMethods

    def report_details(token, marketplace_id, merchant_id)
      #...
    end

Я включил эту проблему в свой контроллер Merchants следующим образом:

class MerchantsController < ApplicationController
  include Reports

А затем попытался вызвать метод report_details в действии на контроллере Merchants следующим образом:

def pull_from_amazon
    me = Merchant.find(params[:merchant_id])
    marketplace = me.marketplace
    token = me.token
    Merchant.report_details(token, marketplace, params[:merchant_id])
    redirect_to root_path
end

Согласно этому сообщению Rich on Rails я должен иметь возможность звонить:

Merchant.report_details(xx,xxx,xxxx)

Но при попытке я получаю NoMethodError. Я также пробовал:

me.report_details(xx,xxx,xxxx)

И получил тот же NoMethodError

Что я сделал не так?


person ToddT    schedule 03.09.2015    source источник
comment
Вы перезапустили Rails?   -  person steve klein    schedule 03.09.2015


Ответы (1)


Попробуй это

MerchantController.report_details(xx,xxx,xxxx)

Но вам лучше включить эту проблему в модель.

person Alex Tonkonozhenko    schedule 03.09.2015
comment
Я попробовал MerchantController.report_details, но это не сработало. НО я включил проблему в модель Merchant, а затем использовал Merchant.report_details, и это сработало!! Спасибо много! - person ToddT; 03.09.2015
comment
@ToddT, на исходный вопрос вы сказали, что включаете его в контроллер, так что Алекс прав, если вы сделаете это на своей модели, конечно, это изменится. Подумайте о том, чтобы принять ответ Алекса. - person Leonel Galán; 03.09.2015