【问题标题】:Rails test and ActiveRecord in routes.rbroutes.rb 中的 Rails 测试和 ActiveRecord
【发布时间】:2015-06-28 11:10:55
【问题描述】:

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

我的项目

  • Rails 4.2
  • Ruby 2.2.0

【问题讨论】:

    标签: ruby-on-rails activerecord test-environments


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!我会试试的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2013-09-15
    • 2012-02-05
    相关资源
    最近更新 更多