【问题标题】:Rails table name contains digitsRails 表名包含数字
【发布时间】:2015-04-10 21:54:11
【问题描述】:

是否可以在 rails 中使用名称中包含数字的表格?

我有一个名为 photo_2014_hierarchies 的表

其模型保存为 photo_2014_hierarchy.rb

在里面我用

class Photo2014Hierarchy < ActiveRecord::Base

适用于该数据库中的其他表

但是,当我尝试在控制器中使用此表时,我得到了

NameError: uninitialized constant Photo2014Hierarchy

【问题讨论】:

  • 模型文件名应该是photo_2014_hierarchy.rb

标签: mysql ruby-on-rails activerecord rails-activerecord rails-models


【解决方案1】:

这不起作用的原因是underscore方法中的单词边界检测:

> "Photo2014Hierarchy".underscore
  => "photo2014_hierarchy"

如您所见,数字不被视为用下划线分隔的单词。在您的情况下,这意味着您的文件必须命名为photo2014_hierarchy.rb,而您的表必须命名为photo2014_hierarchies

注意:table_name 仅在您无法相应更改表名时才需要,因为 Rails 知道如何将层次结构复数化。

> "Photo2014Hierarchy".pluralize.underscore
  => "photo2014_hierarchies"

【讨论】:

    【解决方案2】:

    有可能,是的。我不会去创建肮脏的模型名称,而是考虑在你的模型中使用table_name,如果你不得不使用旧的命名约定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      • 2012-05-06
      • 2021-03-21
      相关资源
      最近更新 更多