美文网首页
2018-07-11

2018-07-11

作者: 护念 | 来源:发表于2018-07-11 22:12 被阅读0次

迁移创建

1 、创建迁移,一条一条的创建,创建完一条后,立马确定是否正确,不正确就修正,不要创建了几条迁移后,才发现错误
2、不是所有迁移都可以正确执行回滚的,比如drop_table
3、回滚命令
rails db:rollback 回滚一次
rails db:rollback STEP=4 回滚四次(PS:后面step必须大写)

创建连接表

其实就是创建,中间的关系表

create_join_table :products,:categories
# 会创建categories_products 表(顺序按表面开头的字母)
# 创建 product_id 和 category_id 字段

添加外键

其实就是直接与另一表关联了

# balances中必须要有,account_id字段,才能去加外键

add_foreign_key :balances,:accounts
# 将 balances中account_id 与 accounts.id 关联了

发现
1、 拥有外键后,创建数据时,可不填(为nil)
2、赋值时,如果赋给它一个不存在的会回滚

迁移执行失败

如: rails db:migrate失败时,是不用执行回滚的,因为都没有正确执行

迁移文件名 和 迁移类名

rails 会检查这两者是否一致,不一致会抛出错误哦

在迁移文件中 execute 写法

def change
  #...一些其它的东东
  execute <<-SQL
    alter table products
      drop column name;
  SQL
# 可以在里面放sql

数据库中check

create table products(
  name text;
  price numeric check(price > 0);
);
# 如果 price 不大于o 会报错

应用中进项目数据库

命令rails db

查看一个model中包含哪些字段

在控制台,输入model名即可,如:Account

迁移 up 与 down方法

1、一般用于写复杂的迁移,为了保证回滚时能成功按照一定顺序执行
2、在迁移文件中,updown总是成对出现
3、up 把迁移往前推
4、down 则是把迁移往后滚(也相当于给自己留的后路)

迁移方法不够用时

Account.connection.execute("update accounts set name = 'dmc' where id =2 ")
用这种方式,可执行任何sql
PS:另外发现,里面的sql和Model.connection 中 Model没有任何关系

相关文章

网友评论

      本文标题:2018-07-11

      本文链接:https://www.haomeiwen.com/subject/dypcpftx.html