Как использовать модель в маршрутах без использования константы модели? - PullRequest
0 голосов
/ 07 января 2019

Я хотел бы использовать модель в моем файле routes.rb без фактического вызова константы модели. Намерение состоит в том, чтобы не вызывать Rails проверять базу данных при доступе к файлу маршрутов, так как это как-то вызывает непредвиденное поведение во время пограничного случая немигрированного сервера, описанного ниже.

Пока у меня есть строка кода, которая использует константу модели, но я только закомментировал ее перед первой миграцией, и она отлично работает. Но я чувствую, что может быть лучше, поэтому я хотел бы знать: есть ли другие способы использования метода из модели без использования константы модели в файле маршрута?

В настоящее время мой файл маршрутов выглядит так:

Rails.application.routes.draw do
  # …
  get 'universal' => 'novels#edit', defaults: { id: Novel.fetch_universal.id }
end

Хотя этот файл отлично работает после миграции, строка с константой имени модели Novel должна быть закомментирована, прежде чем любая база данных новая может быть перенесена. Если это не закомментировано, то rails попытается проверить таблицу романов в базе данных перед любым действием базы данных (даже включая удаление базы данных с помощью rake db:drop) и выдаст ошибку, что таблица «романы» не найдена.

1 Ответ

0 голосов
/ 07 января 2019

Вы можете попробовать следующее, я думаю,

{ id: (ActiveRecord::Base.connection.tables.include?('novels') ? Novel.fetch_universal.id : [] }

Должно работать, не проверено!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...