Задать вопрос
@rusrich

Почему на сервере через PUMA не работает метод find_by_slug в ROR?

Делаю API для GET запросов.
Задача была открывать конкретную страницу не по ID, а по определенному номеру, соответствующей столбцу в БД.
На локальном компьютере работает нижеприведенная схема корректно.
После деплоя на сервер и попытке открыть страницу по some_id_number получаю:

Completed 500 Internal Server Error in 13ms (ActiveRecord: 0.0ms)
NoMethodError (undefined method `find_by_slug' for Class:.....
Did you mean? find_by_sql

В консоли на локалке по some_id_number все работает, страницу находит правильную.
На сервере выдает тоже самое undefined method.

База данных на локалке и на продакшене PostgreSQL одинаковых версий.
Подскажите, в чем может быть причина?

Контроллер:
module Api
  module V1
    class PagesController < ApplicationController
      def show
        @page = Page.find_by_slug(params[:some_id_number])
        render json: { status: 'SUCCESS', message: 'loaded', somenumber: @page.some_id_number, pid: @page.id }, status: :ok
      end
    end
  end
end


Роуты:
namespace :api do
    namespace :v1 do
      resources :pages, only: :show, param: :some_id_number
    end
  end
  • Вопрос задан
  • 68 просмотров
Подписаться 2 Средний 2 комментария
Решения вопроса 1
@rusrich Автор вопроса
Нашел решение. Может кому пригодится:

module Api
  module V1
    class PagesController < ApplicationController
      def show
        @page = Page.find_by(some_id_number: params[:some_id_number])
        render json: { status: 'SUCCESS', message: 'loaded', somenumber: @page.some_id_number, pid: @page.id }, status: :ok
      end
    end
  end
end
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы