博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ActiveRecord::ConnectionAdapters::SchemaStatements | 有关 Column 的常见方法笔记
阅读量:6261 次
发布时间:2019-06-22

本文共 2910 字,大约阅读时间需要 9 分钟。

跟 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)

  

 

转载于:https://www.cnblogs.com/laoquans/p/3984653.html

你可能感兴趣的文章
javasrcipt——正则
查看>>
事务的特性——ACID
查看>>
VUE页面渲染问题
查看>>
day38——多进程Manager、进程池
查看>>
Asp.Net 弹出窗体始终在顶层方法
查看>>
C语言字符串函数总结--<转载>
查看>>
POJ 1185 炮兵阵地[状态压缩DP]
查看>>
POJ 2369 Budget【有上下界的最大流】
查看>>
HNU Indiana Jones and the lost Soccer Cup 【拓扑排序】
查看>>
CentOS系统操作mysql的常用命令
查看>>
ftp断点续传
查看>>
6月3日工作日志
查看>>
Android应用性能测试
查看>>
SQL Server2008附加数据库之后显示为只读时解决方法
查看>>
zrender源码分析2--初始化Storage
查看>>
git 的一般使用
查看>>
Mysql使用小tips
查看>>
Hadoop 命令 && Web UI
查看>>
【java】html解析
查看>>
第八章 类和模块(类部分)
查看>>