错误❌:

1.belongs_to :job, dependent: :destroy //尝试删除一条resumen后,job没有同步删除??

答:建立一对多的关系,如job和resume。应该在job中has_many :resumes, dependent: :delete_all 或者destroy.这样一旦job实例对象被删除,现关联的所有resume也被删除。

2 在rails console中对database进行操作。关注log

比如对Job的所有数据的is_hidden属性全部变更值为false。我开始没有save,所以没有存入数据库。

需要这么写:

a = Job.all

a.each do |job|

job.is_hidden = false

job.save  //最关键的是要save,否则会返回一系列数据,但不会存入数据库。

end

3. layout 中的参数传递。为了实现全部隐藏/全部发布 工作。在admin.html.erb中增加了这个功能。但如果在后台新增/更新 工作的话,仍然会调用这个layout.但是:

link_to("全部发布", publish_all_admin_job_path(@jobs), method: :patch) 中的@jobs,在new/create edit/update 方法中没有声明@jobs变量,所以会报告错误❌。如下:

No route matches {:action=>"publish_all", :controller=>"admin/jobs", :id=>nil} missing required keys: [:id]

修改方法有两种:

第一种。在controller中的new/create/edit/update的 method中加上@jobs = Job.all

第二种。直接把admin.html.erb中的@jobs改为 Job.all


delete_all 和 destroy的具体区别:看log


用delete_all:直接从数据库删除,不执行callback,所以效能高一点。
  User Load (0.1ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ?  [["id", 1], ["LIMIT", 1]]
  Job Load (0.1ms)  SELECT  "jobs".* FROM "jobs" WHERE "jobs"."id" = ? LIMIT ?  [["id", 3], ["LIMIT", 1]]
   (0.0ms)  begin transaction
  SQL (0.2ms)  DELETE FROM "resumes" WHERE "resumes"."job_id" = ?  [["job_id", 3]]
  SQL (0.1ms)  DELETE FROM "jobs" WHERE "jobs"."id" = ?  [["id", 3]]
   (1.0ms)  commit transaction

用destroy: 和delete_all的区别,见标红
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ?  [["id", 1], ["LIMIT", 1]]
  Job Load (0.1ms)  SELECT  "jobs".* FROM "jobs" WHERE "jobs"."id" = ? LIMIT ?  [["id", 4], ["LIMIT", 1]]
   (0.1ms)  begin transaction
  Resume Load (0.1ms)  SELECT "resumes".* FROM "resumes" WHERE "resumes"."job_id" = ?  [["job_id", 4]]
  SQL (0.2ms)  DELETE FROM "resumes" WHERE "resumes"."id" = ?  [["id", 7]]
  SQL (0.3ms)  DELETE FROM "jobs" WHERE "jobs"."id" = ?  [["id", 4]]
   (0.9ms)  commit transaction

@jobs = Job.where("is_hidden = ?", true)  //检索属性是is_hidden,值是value的数据。

12月3日周日,关联:has_many(dependent::delete_all和destroy的区别) 注意看log; where等查询语句的用法。 layout传递参数❌的更多相关文章

  1. 12月17日周日 form_for的部分理解。belongs_to的部分理解

    1.lean guide:helper method query ,✅

  2. 12月16日广州.NET俱乐部下午4点爬白云山活动

    正如我们在<广州.NET微软技术俱乐部与其他技术群的区别>和<广州.NET微软技术俱乐部每周三五晚周日下午爬白云山活动>里面提到的, 我们会在每周三五晚和周日下午爬白云山.   ...

  3. 全国Uber优步司机奖励政策 (12月28日-1月3日)

    本周已经公开奖励整的城市有:北 京.成 都.重 庆.上 海.深 圳.长 沙.佛 山.广 州.苏 州.杭 州.南 京.宁 波.青 岛.天 津.西 安.武 汉.厦 门,可按CTRL+F,搜城市名快速查找. ...

  4. 武汉Uber优步司机奖励政策(12月21日-12.27日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  5. 佛山Uber优步司机奖励政策(12月28日到1月3日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  6. 南京Uber优步司机奖励政策(12月14日到12月20日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  7. 长沙Uber优步司机奖励政策(12月21日到12月27日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  8. 长沙Uber优步司机奖励政策(12月14日到12月20日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  9. 16.go语言基础学习(上)——2019年12月16日

    2019年12月13日10:35:20 1.介绍 2019年10月31日15:09:03 2.基本语法 2.1 定义变量 2019年10月31日16:12:34 1.函数外必须使用var定义变量 va ...

随机推荐

  1. Python中type的用法

    目录 描述 语法 用法 type和isinstance Type和Object 描述 python的 type 函数有两个用法,当只有一个参数的时候,返回对象的类型.当有三个参数的时候返回一个类对象. ...

  2. python环境安装selenium和手动下载安装selenium的方法

    方法1:cmd环境下,用pip install selenium 可能会很慢 方法2:下载selenium安装包手动安装 下载地址:https://pypi.org/project/selenium/ ...

  3. linux基础命令---chattr

    chattr 改变文件的属性,这个命令只有超级用户才能使用.这个指令适用于ext2.ext3.ext4.xfs.ubifs.reiserfs.jfs系统. 此命令的适用范围:RedHat.RHEL.U ...

  4. Redis设置密码重启后失效的解决方案

    原因可能有两个: 1.只是单纯的通过命令行设置了密码,这种设置方式是临时的,当服务器重启后,密码会失效. config set requirepass yourPassword 解决方案:在redis ...

  5. 25个c#知识点

    网站地址:http://m.3y.uu456.com/mbp_56hl91r1rx5uqa87qrzo_1.html

  6. 【运行错误】Uncaught DOMException: Blocked a frame with origin "null" from accessing a cross-origin frame.

    代码如下: <html> <head> <script> /*window.frames[]可以通过下标或名称访问单独的frame*/ window.onload= ...

  7. C语言宏定义中的#和##的作用【转】

    本文转载自:http://my.oschina.net/shelllife/blog/123202 在宏定义中#和##的作用是:前者将宏定义的变量转化为字符串:后者将其前后的两个宏定义中的两个变量无缝 ...

  8. 记录openwrt下补丁apply的过程中出错,但是可以单独打上该补丁

    背景: 在openwrt的编译框架下无法正确打上补丁,而单独使用git却可以成功 这个补丁到底与其它补丁有何不同? 该补丁的生成的过程解析: 旧文件:vi 打开旧文件会提示no newline at ...

  9. 打印图形|2014年蓝桥杯B组题解析第五题-fishers

    打印图形 小明在X星球的城堡中发现了如下图形和文字: rank=3 rank=5 rank = 6 小明开动脑筋,编写了如下的程序,实现该图形的打印. 答案:f(a, rank-1, row, col ...

  10. attr返回被选元素的属性值

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...