【发布时间】:2018-12-10 10:34:42
【问题描述】:
我对 Rails 很陌生,对模块在这里的工作方式有点困惑。我有一个这样的项目结构:
# app/models/foo.rb
class Foo < ActiveRecord
# lib/external_service/foo.rb
module ExternalService
class Foo
# lib/external_service/bar.rb
module ExternalService
class Bar
attribute :foo, Foo # not the model
我之前使用过许多编码语言,我希望可以很容易地在 Bar 和 ExternalService 中使用“Foo”,但是
LoadError: 无法自动加载常量 Foo,需要 lib/external_service/foo.rb 来定义它
ExternalService::Foo 通常不应该在 ExternalService 之外可见,但是整个项目都死在这个东西上
我是否只是遗漏了一种“严格模式”符号或任何东西以确保我显然是指服务内部的 ExternalService::Foo 并防止服务杀死我的模型?
我知道我可以只添加模块,但我想让代码保持可读性。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 module namespaces