zoukankan      html  css  js  c++  java
  • ActiveRecord::ConnectionAdapters::SchemaStatements | 有关 Column 的常见方法笔记

    跟 column相关的常见的方法有:

    column_exists?  (table_name, column_name, type = nil, options = {})
    add_column (table_name, column_name, type, options = {})
    remove_column (table_name, column_name, type=nil, options = {})
    remove_columns (table_name, *column_name)
    change_column (table_name, column_name, type, options = {})
    change_column_default (table_name, column_name, default)
    change_column_null (table_name, column_name, null, default = nil)
    rename_column (table_name, column_name, new_column_name)

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    column_exists? 方法用来判断某个表里面的某个字段是否存在,语法如下:

    column_exists? (table_name, column_name, type = nil, options = {})

    # 一般只需要指定数据表和字段名字就行:
    column_exists? :users, :name
    
    # 也可以指定 类型,默认值等来判断符合条件的字段是否存在,如下:
    column_exists?(:users, :name, :string)
    column_exists?(:users, :name, :string, limit: 100)
    column_exists?(:users, :name, :string, default: 'default')
    column_exists?(:users, :name, :string, null: false)
    column_exists?(:users, :salary, :decimal, precision: 8, scale: 2)

    add_column 方法用来为某个表添加字段,

    相对于上面的 column_exists? 方法,add_column 方法必须指定字段的 type.

    用法和 column_exists? 极其类似,直接把上面的例子方法名改动(除了没有指定类型那个)
    如下,就变成添加字段了

    # 语法
    add_column (table_name, column_name, type, options={})
    # 例子
    add_column(:users, :name, :string)
    add_column(:users, :name, :string, limit: 100)
    add_column(:users, :name, :string, default: 'default')
    add_column(:users, :name, :string, null: false)
    add_column(:users, :salary, :decimal, precision: 8, scale: 2)

    remove_column 方法用来删除某个表格里面的某个字段

    所需要的参数和 column_exists? 完全一样,不过最常见的指定表名和字段名字。当然你可以像column_exists? 那样指定满足某些条件。

    remove_column (table_name, column_name, type = nil, options = {})

    # 语法
    remove_column (table_name, column_name, type = nil, options = {})
    # 例子
    remove_column(:users, :name)

    如果一下子要删除好几个字段,remove_columns 可以帮到我们。指定表名字和多个字段名字就行,使用如下:

    # 语法
    remove_column (table_name, *column_name)
    # 例子
    remove_column(:users, :address, :phone)

    当要改变某个字段的结构,使用 change_column 系列,可以达到我们的目的。

    change_column 的语法和 add_column 的语法一样,必须指定 type.

    # 语法
    change_column (table_name, column_name, type, options={})
    # 例子
    change_column (:users, :name, :string, limit: 50)
    change_column (:users, :description, :text)

    而change_column_default 和 change_column_null 则是用来做一些小的改动。

    # 语法
    change_column_defalut (table_name, column_name, default)
    change_column_null (table_name, column_name, null, default = nil)
    
    # 两个方法的例子如下:
    # 改变字段的默认值:
    change_column_default(:users, :name, "Tom")
    change_column_default(:users, :age, 18)
    change_column_default(:users, :email, nil)
    
    # 改变字段是否允许为空:
    change_column_null(:users, :nickname, false)
    change_column_null(:users, :nickname, true)

    值得注意的是 change_column_null 的第四个参数,这个参数是可选的,你可以用这个参数来吧已经存在的 Null 数据替换为某个值, 当你需要加某些约束的时候可以使用,但是必须注意,在你改完之后加进去的数据是非法的,也就是说第四个参数并不是设置字段的默认值。还是不用这个为好 :)

    重命名字段:

    给定所需参数既可

    # 语法
    rename_column (table_name, column_name, new_column_name)
    # 例子
    rename_column(:users, :description, :intro)
    

      

  • 相关阅读:
    2019中山纪念中学夏令营-Day19 数论初步【GCD(最大公约数),素数相关】
    2019中山纪念中学夏令营-Day14 图论初步【dijkstra算法求最短路】
    2019中山纪念中学夏令营-Day12[JZOJ]
    2019中山纪念中学夏令营-Day9[JZOJ](第六次模拟赛)
    2019中山纪念中学夏令营-Day4[JZOJ]
    2019中山纪念中学夏令营-Day2[JZOJ]
    2019中山纪念中学夏令营-Day1[JZOJ]
    CCPC2019江西省赛-Problem G.Traffic
    T137223 节能主义
    T137226 彩虹海
  • 原文地址:https://www.cnblogs.com/laoquans/p/3984653.html
Copyright © 2011-2022 走看看