📜  Ruby on Rails 2.1-迁移

📅  最后修改于: 2020-10-20 05:14:38             🧑  作者: Mango


Rails Migration使用Ruby来定义对数据库架构的更改,从而可以使用版本控制系统使事物与实际代码保持同步。

它有很多用途,例如-

  • 开发人员团队-如果一个人进行了架构更改,则其他开发人员只需要更新并运行“ rake migration”。

  • 生产服务器-在推出新版本以使数据库也更新时运行“ rake migration”。

  • 多台机器-如果您同时在台式机和笔记本电脑上或在多个位置上进行开发,则迁移可以帮助您使它们保持同步。

Rails迁移可以做什么?

  • create_table(名称,选项)

  • drop_table(名称)

  • 重命名表(旧名称,新名称)

  • add_column(表名,列名,类型,选项)

  • named_column(表名,列名,新列名)

  • change_column(表名,列名,类型,选项)

  • remove_column(表名,列名)

  • add_index(表名,列名,索引类型)

  • remove_index(表名,列名)

迁移支持所有基本数据类型-字符串,文本,整数,浮点数,日期时间,时间戳,时间,日期,二进制和布尔值-

  • 字符串-用于小数据类型,例如标题。

  • 文本-用于较长的文本数据,例如描述。

  • 文本-用于较长的文本数据,例如描述。

  • 整数-用于整数。

  • float-代表小数。

  • date-time and timestamp-将日期和时间存储到列中。

  • 日期和时间-仅存储日期或仅存储时间。

  • 二进制-用于存储图像,音频或电影等数据。

  • 布尔值-用于存储true或false值。

有效的列选项是-

  • 限制(:limit =>“ 50”)

  • 默认(:default =>“ blah”)

  • null (:null => false表示NOT NULL

–由Rails Migration完成的活动可以使用任何前端GUI或直接在SQL提示符下完成,但是Rails Migration使所有这些活动非常容易

有关这些的详细信息,请参见Rails API

创建迁移

这是用于创建迁移的通用语法-

C:\ruby\application> ruby script/generate migration table_name

这将创建文件db / migrate / 001_table_name.rb。迁移文件包含描述数据库表数据结构的基本Ruby语法。

注意-运行迁移生成器之前,建议清理由模型生成器生成的现有迁移。

我们将创建与三个表相对应的两个迁移-书籍和主题。

C:\ruby> cd library
C:\ruby\library> ruby script/generate migration books
C:\ruby\library> ruby script/generate migration subjects

请注意,在创建迁移时,您将小写用于书籍和主题,并使用复数形式。这是每次创建迁移时都应遵循的Rails范例。 –

编辑代码以告诉它该怎么做

转到应用程序的db / migrate子目录,并使用任何简单的文本编辑器逐个编辑每个文件。

如下修改001_books.rb-

ID列将自动创建,因此在此也不要这样做。

class Books < ActiveRecord::Migration
   def self.up
      create_table :books do |t|
         t.string     :title, :limit => 32, :null => false
         t.float      :price
         t.integer    :subject_id
         t.text       :description
         t.timestamp  :created_at
      end
   end
   def self.down
      drop_table :books
   end
end

迁移到新版本时,将使用self.up方法,如果需要,将使用self.down方法回滚所有更改。此时,以上脚本将用于创建books表。

修改002_subjects.rb如下-

class Subjects < ActiveRecord::Migration
   def self.up
      create_table :subjects do |t|
         t.string :name
      end
      Subject.create :name => "Physics"
      Subject.create :name =>"Mathematics"
      Subject.create :name => "Chemistry"
      Subject.create :name => "Psychology"
      Subject.create :name => "Geography"
   end
   def self.down
      drop_table :subjects
   end
end

上面的脚本将用于创建主题表;它将在主题表中创建五个记录。

运行迁移

现在,您已经创建了所有必需的迁移文件,是时候对数据库执行它们了。为此,请转到命令提示符并打开应用程序所在的库目录,然后按如下所示键入rake migration-

C:\ruby\library> rake db:migrate

如果不存在,将创建一个“ schema_info”表,该表将跟踪数据库的当前版本。每个新迁移将是一个新版本,并且任何新迁移都将运行,直到您的数据库为当前版本为止。

Rake是一种Ruby构建程序,类似于Rails所利用的Unix make程序,它可以简化复杂任务的执行,例如更新数据库的结构等。

运行生产和测试数据库的迁移

如果要指定用于迁移的Rails环境,请使用RAILS_ENV shell变量。

例如-

C:\ruby\library> set RAILS_ENV=production
C:\ruby\library> rake db:migrate
C:\ruby\library> set RAILS_ENV=test
C:\ruby\library> rake db:migrate
C:\ruby\library> set RAILS_ENV=development
C:\ruby\library> rake db:migrate

–在Unix上,使用“ export RAILS_ENV = production”代替set命令。

接下来是什么?

现在,我们有了数据库和所需的表。在随后的两章中,我们将探讨两个重要的组件,分别称为控制器(ActionController)和视图(ActionView)。

  • 创建控制器(动作控制器)
  • 创建视图(动作视图)