在Rails中命名空间服务对象的正确方法是什么?

时间:2014-08-05 10:54:45

标签: ruby-on-rails ruby

我想创建多个类,每个类都位于相同的命名空间中,我希望它们位于不同的文件中。

即。

# app/services/core_metatags

module Metatags::CoreMetatags
  #...
end

# app/services/twitter_card

module Metatags::TwitterCard
  #...
end

# app/services/facebook_open_graph

module Metatags::FacebookOpenGraph
  #...
end

我希望将每个模块放入不同的文件中。但是,当我尝试这样做时,我收到以下错误:

Unable to autoload constant TwitterCard, expected 
/Users/peter/project/app/services/twitter_card.rb to define it

我做错了什么?这种方式命名空间不正确吗?或者它是目录命名问题......?

1 个答案:

答案 0 :(得分:2)

您需要命名空间的目录,以便:

  • Metatags::CoreMetatags进入app/services/metatags/core_metatags.rb
  • Metatags::TwitterCard进入app/services/metatags/twitter_card.rb
  • Metatags::FacebookOpenGraph进入app/services/metatags/facebook_open_graph.rb