routes.rb中的Rails测试和ActiveRecord



我想知道如何在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

相关内容

  • 没有找到相关文章

最新更新