Ruby on 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”。
如果您需要更改表名,有几种方法可以覆盖默认行为。
在config/environment.rb中,您可以指定ActiveRecord::Base.use_pluralization = false。这将适用于所有 ActiveRecord 对象。
您可以调用set_table_name为特定模型指定自定义表名。
例如
class Dog < ActiveRecord::Base
set_table_name 'dog'
end
您还可以覆盖table_name方法并返回值。
例如
class Dog < ActiveRecord::Base
def table_name
'dog'
end
end