2015-06-28 50 views
0

我想知道我可以如何使用Rails應用程序的routes.rb文件中的ActiveRecord。Rails測試和ActiveRecord在routes.rb

我正在創建一些可以動態啓用或禁用的可選模塊。如果模塊被禁用,我不希望路由存在,所以我創建了可選路由的條件。在開發過程中它正常工作,但在測試環境中,即使我的燈具已正確解決,我的查詢仍然返回nil。

我在使用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
  • 的Ruby 2.2.0

回答

1

如果我想啓用或禁用動態路由,我想嘗試在數據庫中的狀態使用環境變量,而不是存儲的標誌(如果它是哪個,關係到設置標誌數據庫,不是存儲全局標誌的最有效的地方)。然後在routes.rb你可以只檢查每個環境變量的存在/感實性:

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

謝謝!我會嘗試的! – anthony