提高Rails中对象名的可读性

Xer*_*ero 2 ruby ruby-on-rails

上下文

鉴于在Rails上命名对象的约定是这样的:

/app/models/foo/bar.rb => class Foo::Bar
Run Code Online (Sandbox Code Playgroud)

如果我有一个文件夹结构:

/app/models/foo/bar/object1.rb
/app/models/foo/bar/object2.rb
/app/models/foo/main.rb
Run Code Online (Sandbox Code Playgroud)

要从我的主要调用此对象,我必须这样做:

class Foo::Main

  def some_method
    Foo::Bar::Object1.new
    Foo::Bar::Object2.new
  end

end
Run Code Online (Sandbox Code Playgroud)

这工作很好.但在这里我的问题:

有没有办法提高对象名称可读性

鉴于我Foo::Main在同一名称空间中Foo; 有没有办法用更短的名字来称呼他们(Foo::Bar::Object1.newFoo::Bar::Object2.new)?

我想他们的名字Bar::Object1.new,并Bar::Object2.new在这方面(或Object1.newObject2.new)

预期

class Foo::Main

  def some_method
    Bar::Object1.new
    Bar::Object2.new
  end

end
Run Code Online (Sandbox Code Playgroud)

这段代码是我所期望的例子,但它不起作用.

mrz*_*asa 6

如果要使用顶层模块,则需要使用嵌套而不使用A::B速记:

module Foo
  class Main

    def some_method
      Bar::Object1.new
      Bar::Object2.new
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

资料来源: