2015-06-28 1 views
0

Я хотел бы знать, как использовать ActiveRecord в файле routes.rb в приложении Rails.Rails test и ActiveRecord в routes.rb

Я создаю некоторые дополнительные модули, которые могут быть включены или отключены динамически. Я не хочу, чтобы маршруты существовали, если модуль отключен, поэтому я создал условие вокруг дополнительных маршрутов. В процессе разработки он работает правильно, но в тестовой среде мой запрос возвращает нуль, даже если мои приборы правильно установлены.

Как я могу сделать тесты для использования своих светильников, когда я использую OptionalModule.all?

Спасибо!

Вот мой routes.rb файл:

Rails.application.routes.draw do 
    optional_modules = OptionalModule.all # this returns nil in test mode 

    # by_name is a scope defined in the model 
    if optional_modules.by_name('GuestBook').enabled? 
    get 'toggle_guest_book_validated/:id', to: 'admin/guest_books#toggle_guest_book_validated', as: :toggle_guest_book_validated 
    end 
end 

Мои светильники:

guest_book: 
    name: GuestBook 
    enabled: true 

Мой проект:

  • Rails 4.2
  • Руби 2.2.0

ответ

1

Если бы я хотел, чтобы включить или отключить маршруты динамически, я бы попытаться установить флаги с помощью переменных среды вместо того, чтобы хранить флаги в состоянии базы данных (который, если это реляционная база данных, не является наиболее эффективным местом для хранения глобальных флагов). Затем в routes.rb вы можете просто проверить наличие/правдивость каждой переменной окружения:

if ENV['MODULE_GUEST_BOOK'] 
    # enable fancy routes 
end 
+0

Спасибо! Я попробую! – anthony