我想知道如何在Rails应用程序的routes.rb文件中使用ActiveRecord。
我正在创建一些可选模块,这些模块可以动态启用或禁用。如果模块被禁用,我不希望路由存在,所以我在可选路由周围创建了一个条件。在开发中,它可以正常工作,但在测试环境中,即使我的fixture得到了正确的解决,我的查询也会返回零。
当我使用OptionalModule.all
时,如何进行测试以使用我的固定装置?
谢谢!
这是我的路由.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
我的项目:
- 轨道4.2
- Ruby 2.2.0
如果我想动态启用或禁用路由,我会尝试使用环境变量来设置标志,而不是将标志存储在数据库状态中(如果是关系数据库,那么它不是存储全局标志的最有效的地方)。然后在routes.rb
中,您可以检查每个环境变量的存在性/真实性:
if ENV['MODULE_GUEST_BOOK']
# enable fancy routes
end