跳转到内容

Ruby on Rails/ActiveRecord/命名

来自维基教科书,开放的书籍,开放的世界
上一页:内置 Rails 工具/命令行参考 索引 下一页:ActiveRecord/迁移

ActiveRecord 使用约定来命名类、表和字段。Rails 使用约定优于配置。ActiveRecord 期望应用程序遵循某些命名约定。这些约定从文件命名、类命名、表命名等等。默认情况下,类是单数的,表是复数的,主键是id,外键是table_id.

注意:在 Rails 定义的约定之外,还有一些保留的名称,不应在您的模型中用于属性

  • lock_version
  • type- 这仅在您具有单表继承时使用,并且必须包含一个类名
  • id- 为主键保留
  • table_name_count- 为计数器缓存保留
  • position- 为 acts_as_list 保留
  • parent_id- 为 acts_as_tree 保留
  • lft- 为 acts_as_nested_set 保留
  • rgt- 为 acts_as_nested_set 保留
  • quote- ActiveRecord::Base 中的方法,用于引用 SQL
  • template
  • class

ActiveRecord 类以单数形式命名。

默认情况下,ActiveRecord 对象的表以复数形式命名。这种复数化通常是 Rails 新用户争论的第一个点。

对于名为“Dog”的类,默认表名为“Dogs”。

如果您需要更改表名,有几种方法可以覆盖默认行为。

设置 use_pluralization

[编辑 | 编辑源代码]

config/environment.rb中,您可以指定ActiveRecord::Base.use_pluralization = false。这将适用于所有 ActiveRecord 对象。

使用 set_table_name

[编辑 | 编辑源代码]

您可以调用set_table_name为特定模型指定自定义表名。

例如

  class Dog < ActiveRecord::Base
    set_table_name 'dog'
  end

覆盖 table_name

[编辑 | 编辑源代码]

您还可以覆盖table_name方法并返回值。

例如

  class Dog < ActiveRecord::Base
    def table_name
      'dog'
    end
  end
华夏公益教科书