Я закончил реализацию и тестирование контроллера, затем переключался между ветвями Git и делал некоторые слияния здесь и там, и т. Д. Теперь я не могу использовать методы, которые я определил для контроллера, и также очень запутан, поскольку я получаю NoMethodError
при попытке вызвать их.
Добавлены правка и решение в конце поста.
Использование Rails версии 5.2.3 - здесьЯ определил свой контроллер: app/controllers/paypal_access_token_controller.rb
:
class PaypalAccessTokenController < ApplicationController
before_action :authenticate_admin!, only: [:show]
def njurf
puts "#######################"
puts "why can't i call these methods dangit"
puts "#######################"
end
def show
# doesn't really matter
end
def update
# doesn't really matter either
# no syntax errors, I promise
end
end
Я бы хотел, чтобы метод update
вызывался при запуске приложения Rails.Я добавил PaypalAccessToken.update()
в файл config/environments/development.rb
- это сработало.Теперь, когда я реализовал вещи в других, казалось бы, не связанных частях приложения, я больше не могу вызывать методы из этого контроллера.
Я удалил строку из config/environments/development.rb
, чтобы я мог запустить консоль Railsи добавил метод njurf
к контроллеру.Из консоли я попытался позвонить PaypalAccessTokenController.njurf
и PaypalAccessTokenController.update
, но оба дали мне сделанный на заказ NoMethodError
.
Вот некоторые доказательства концепции
Loading development environment (Rails 5.2.3)
irb(main):001:0> PaypalAccessTokenController.update
Traceback (most recent call last):
1: from (irb):1
NoMethodError (undefined method `update' for PaypalAccessTokenController:Class)
irb(main):002:0> PaypalAccessTokenController.update()
Traceback (most recent call last):
1: from (irb):2
NoMethodError (undefined method `update' for PaypalAccessTokenController:Class)
irb(main):003:0> PaypalAccessTokenController.njurf()
Traceback (most recent call last):
1: from (irb):3
NoMethodError (undefined method `njurf' for PaypalAccessTokenController:Class)
Итак, класс контроллерасуществует, по крайней мере, но я не знаю, почему я получаю эту ошибку - и я не знаю, как ее исправить.
Любая помощь будет признательна.
edit: Этот контроллер имел маршруты только для метода show
.Я удалил этот маршрут, когда внедрил и протестировал метод update
, потому что я больше не нуждался / не хотел, чтобы эти методы были доступны через URL-адреса.Это то, что сделало методы недоступными из консоли.
решение: Либо я уезжаю по пути к одному из методов контроллера - или , как РикиИспанский и amit_saxena, указанные ниже, должным образом объявляют методы как методы класса.
Спасибо за ответы