跳轉到內容

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
華夏公益教科書