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

61 ruby activerecord ruby-on-rails

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

rails generate controller Users
rails generate model User name:string email:string
Run Code Online (Sandbox Code Playgroud)

现在打开迁移文件

 class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.string :email    
      t.timestamps
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这里的表名是复数(用户).

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

AMI*_*ING 54

Ruby on Rails遵循语言惯例.这意味着模型表示单个用户,而数据库表由许多用户组成.

  • 将其作为"活动"的rails辅助方法"复数化"非常聪明.它知道"人"的复数是"人",依此类推.http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-pluralize (6认同)
  • 那么非标准复数的故事是什么?例如,如果我的模型是"活动",那么表格最终会成为"活动"还是"活动"? (3认同)
  • Rails模型复数化约定假设模型是用英语编写的吗? (2认同)

Emi*_*ily 12

User模型的实例代表单个用户,因此是单数.users相比之下,该表占据了您的所有用户,因此它是复数形式.