12月3日周日,关联:has_many(dependent::delete_all和destroy的区别) 注意看log; where等查询语句的用法。 layout传递参数❌
错误❌:
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
@jobs = Job.where("is_hidden = ?", true) //检索属性是is_hidden,值是value的数据。