0

我想知道如何在 Rails 应用程序的 routes.rb 文件中使用 ActiveRecord。

我正在创建一些可以动态启用或禁用的可选模块。如果模块被禁用,我不希望路由存在,所以我围绕可选路由创建了一个条件。在开发中它可以正常工作,但在测试环境中,即使我的固定装置已正确解决,我的查询也会返回 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

我的项目

  • 导轨 4.2
  • 红宝石 2.2.0
4

1 回答 1

1

如果我想动态启用或禁用路由,我会尝试使用环境变量设置标志,而不是将标志存储在数据库状态中(如果它是关系数据库,则不是存储全局标志的最有效位置反正)。然后routes.rb你可以检查每个环境变量的存在/真实性:

if ENV['MODULE_GUEST_BOOK']
  # enable fancy routes
end
于 2015-06-29T00:07:13.143 回答