• rails 创建数据库db:migrate


    db:migrate

    首先,确保你已经配置好了database.yml,假设我们要创建一个名为person的model,现在我们可以通过db:migrate任务来避免直接使用SQL来操作数据库:

    rails g model person name:string age:int

    这条命令将在你的db/migrate目录下创建001_create_people.rb文件,我们可以通过它来创建people(people是person的复数)表:

    $ rake db:migrate
    == CreatePeople: migrating ===================
    -- create_table(:people)
    -> 0.1900s
    == CreatePeople: migrated (0.1900s) ==========

    现在,你会发现你的数据库中已经多了一个people表,它包含3个字段:id,name,age,如果你不需要那个自动创建的id字段,那么你可以修改001_create_people.rb,在create_table :people后面加上:id => false即可。

    如果随后你发现你需要再增加一个学位字段,也很简单:

    $ rails g migration add_degree_to_people
    == AddDegreeToPeople: migrating ============
    -- add_column(:people, :degree, :string)
    -> 0.3400s
    == AddDegreeToPeople: migrated (0.4100s) ===

    这将在db/migrate目录下创建002_add_degree_to_people.rb文件,对它进行编辑:

    class AddDegreeToPeople < ActiveRecord::Migration
    def self.up
    add_column :people, :degree, :string
    end
    def self.down
    remove_column :people, :degree
    end
    end

    然后再次执行rake db:migrate,现在你会发现people表已经多了一个degree字段。

    事实上除了add_column,我们还可以对数据库进行更多的操作:

    create_table(name, options),创建表 
    drop_table(name),删除表 
    rename_table(old_name, new_name),重命名表 
    add_column(table_name, column_name, type, options),添加列 
    rename_column(table_name, column_name, new_column_name),重命名列 
    change_column(table_name, column_name, type, options),改变列属性 
    remove_column(table_name, column_name),删除列 
    add_index(table_name, column_name, index_type),创建索引 
    remove_index(table_name, column_name),删除索引 
    唯一需要注意的就是:必须在down方法中撤销up方法对数据库所作的一切更改,以保证我们所有的迁移都是可逆的。

    比如,假设我们现在想从people中去除degree字段,那我们只需要执行下面这条语句就可以了:

    $ rake db:migrate version=1

    如果我们连people表也不需要了,那就执行:

    $ rake db:migrate version=0

    另外,除了db:migrate,还有两个比较有用的操作数据库的rake任务:

    rake db:schema:dump,这将在db目录下创建一个schema文件,你可以通过复制它的内容来为数据库中现有的表创建migration文件(如果你的应用不是一开始就使用db:migrate的话) 
    rake db:structure:dump,这将在db目录下创建一个structure文件,它包含创建当前数据库结构所需的SQL语句。
     
  • 相关阅读:
    ModelMap和ModelAndView的作用
    jquery 临时存值
    条件sql ibatis
    IBATIS动态SQL
    MyEclipse 快捷键
    jquery $用法
    弹窗案例
    Ibatis sql语句1
    Ibatis sql语句
    jQuery的三种$()
  • 原文地址:https://www.cnblogs.com/rywx/p/2510592.html
Copyright © 2020-2023  润新知