如何将模块类名转换为rails中的符号

Anc*_*hor 3 ruby ruby-on-rails rails-engines

在rails初始化文件中,有一行用于配置接受符号的活动对象:

config.objects += [ :room, :hotel, ..etc ]
Run Code Online (Sandbox Code Playgroud)

这些符号表示我想要配置的类.

我的问题是我使用的是一个rails引擎,它定义了我想要配置的'Blogit :: Post'模块类.如何将其作为符号添加到配置数组中?

Bea*_*rtz 6

您可以通过在config.objects中添加下划线或正斜杠来控制字符串分类中的驼峰案例和命名空间.

正斜杠归类为命名空间:

:"blogit/post".classify #=> Blogit::Post
Run Code Online (Sandbox Code Playgroud)

下划线归类为camelcase:

:blogit_post.classify #=> BlogitPost
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下,解决方案是:

config.objects += [ :room, :hotel, :"blogit/post", ..etc ]
Run Code Online (Sandbox Code Playgroud)

或者,如果使用ruby 2.0,则可以使用更清晰的数组符号实例化方法:

config.objects += %i(room hotel blogit/post)
Run Code Online (Sandbox Code Playgroud)