Ruby on Rails复数(控制器)和单数(模型)约定 - 解释

时间:2012-04-09 18:50:28

标签: ruby-on-rails ruby activerecord

根据Ruby on Rails惯例,控制器名称变为多元化,而模型名称是单数。示例:用户控制器,但是用户模型。

rails generate controller Users
rails generate model User name:string email:string

现在打开迁移文件

 class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.string :email    
      t.timestamps
    end
  end
end

此处表名是复数(用户)。

所以我的问题是 - 为什么表名是复数(用户),即使模型名称是单数(用户)?

5 个答案:

答案 0 :(得分:51)

Ruby on Rails遵循语言约定。这意味着模型代表单个用户, 而数据库表由许多用户组成。

答案 1 :(得分:12)

User模型的实例代表单个用户,因此是单数。相比之下,users表包含了所有用户,因此它是复数形式。

答案 2 :(得分:4)

完成Emily的回答

  

User模型的实例代表单个用户,因此是单数。相比之下,users表包含了所有用户,因此它是复数形式。

答案 3 :(得分:1)

在rails conntroller和table name中,复数模型单独是单数。在一个双字名称中,第二个单词是复数!

答案 4 :(得分:0)

因为该表包含用户。它就是惯例。