错误使用顶级常量

时间:2019-06-20 02:47:54

标签: ruby-on-rails

除测试模式外,所有代码在所有环境中均能正常工作。在测试模式下,该类是TopLevel类的子类,而不是其模块类。

# app/controllers/base_controller.rb
class BaseController < ApplicationController
end

# app/controllers/api/base_controller.rb
module API
  class BaseController < BaseController
  end
end

# app/controllers/api/v2/base_controller.rb
# style 1
# this style cause problem when run rspec, API::V2::BaseController now
# subclass from BaseController, which should be API::BaseController
module API
  module V2
    class BaseController < BaseController
    end
  end
end

# style 2
# this style make subclass from correct class, but kinda ugly in code.
module API
  module V2
    class BaseController < API::BaseController
    end
  end
end

解决方案1: 遵循样式2,但我不喜欢它,并寻求更好的方法。

解决方案2 不要在TopLevel中使用BaseController,而是将其重命名为OtherBaseController之类的其他名称,因此我可以编写样式1。因为Rails在TopLevel中找不到BaseController。

0 个答案:

没有答案