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