Rails框架创建的db表是什么样的?

Ixi*_*ion 1 database model ruby-on-rails

我没有设置Rails环境,实际上很难找到快速的答案,所以我会问专家.

当Rails根据您设置的"模型"创建一个表时,Rails是否创建了一个完全镜像该模型的表,或者它是否在表中添加了更多字段以帮助它发挥其魔力?如果是这样,它会添加哪些其他字段以及为什么?也许你可以剪切和粘贴表结构,或者只是指向一个解决这个问题的doc或tutorial部分.

Mik*_*use 6

如果您正在构建一个全新的应用程序,包括一个新的数据库,那么您可以使用迁移构建整个后端.运行

ruby script/generate model User name:string
Run Code Online (Sandbox Code Playgroud)

生成模型的user.rb文件和迁移:

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string :name

      t.timestamps
    end
  end

  def self.down
    drop_table :users
  end
end
Run Code Online (Sandbox Code Playgroud)

您可以看到,默认情况下,生成脚本为(创建和上次更新)添加"时间戳",如果允许它们保持存在,则会自动管理它们.

不可见,但重要的是,创建一个额外的列"id"作为单个主键.但这并不是类似的 - 您可以在模型中指定自己的主键,这在您使用旧架构时非常有用.假设您将id保留为密钥,那么Rails将使用可用于新密钥值的任何特定于RDBMS的功能.


Bra*_*son 5

在ActiveRecord中,模型是从数据库表创建的,而不是相反.

您可能还想查看迁移,这是一种从Ruby代码描述和创建数据库的方法.但是,迁移与模型无关; 模型仍然是在运行时根据数据库的形状创建的.

在Rails网站上有与ActiveRecord和Migrations相关的截屏视频:http://www.rubyonrails.org/screencasts