Rails101二刷 8.3的update部分

把edit定义到没大问题的感觉

就继续尝试update的定义, 如下截图的方法可以避开报错, 不过...

把update这样定义巨厉害...改其中一个post文章的edit界面内容, 全部整个user post过的文章全部一起改了,连不是group owner的group里的post内容都改成一致, 卧槽, 效果太牛了哈哈哈哈哈


一整排都一样太彪悍了哈哈哈

真的觉得从edit的定义开始就有问题了哈哈哈哈 继续试吧. 

我现在真的很想知道去哪里查正确的params们啊哈哈哈哈



Second Try

一通改都不满意, 然后把edit的内容改成如下截图的

这样说不定定位能准一些, 别全部的post一起改动. 尝试一下. 接着把update的定义改动成这样


结果还是全体一起变, 妈呀, 太好笑了哈哈哈哈

再尝试一次! 认真观察一下之前的CRUD里update的部分, 改成如下


终于成了哈哈哈哈哈哈!!! 

不是@post = Post.update(post_params)

而是@post.update(post_params)

整个就能对单独的post改内容了!!! 太high了哈哈哈哈哈 居然把问题解决了哈哈哈哈哈哈哈


彩蛋

接着玩一下, 看看是什么精准定位到了独自的post~~

第一个改动

先玩一下edit的def部分, 改回去


看看效果

嗯, 不会报错. 但无论挑选哪个post改动, 只能改动之前已经改动的那个post. 

比如, 之前改了第九条的内容. 我现在就算点击第一个post的内容, 到edit页面也不会显示第一条post的内容, 而是第九条的内容. 改动内容submit后, 回到posts的页面也只显示改动了第九条的内容. 第一条内容纹丝不动完全不受影响. 真是神奇哦哈哈哈哈, 这就是params[:group_id]的神奇了吧?!!


第二个改动

把edit改成正确的, 接着试着改一下update的内容

删掉 @post = Post.find(params[:id])这条看看效果


效果是报错, 跳过这步后, 直接找不着北了, 感觉也是post都没给个方向


第三个改动

把@post = Post.find(params[:id])

改成@post = Post.find(post_params) 

看看效果


看来这样是找不到post的id的, 毕竟post_params是我自己定义的调出post具体内容用的代码, 并不是内建的一个id数据, 而是一个复合型内容, 并不是post的id呢~


第四个改动

删掉@post.group = @group这行代码

居然完全没有影响, 我去, 原来这行不需要的咩?!!!肯定有啥作用吧?!!! 还是说在edit已经定位完成, 所以这行删掉没有影响?! 肯定有啥作用吧?! 在create里面存在一定有用吧? 说不定要等我更厉害了才知道它的作用吧...OK,继续试


第五个改动

删掉@post.group = @group这行代码 的基础上, 继续删除 @post.user = current_user

就是两行代码都一起删掉, 感觉去掉两个限定条件的感觉, 看看效果

完全没有影响...


最后总结


最后, 变成这样了...这样的update的def版本, 也是能正常运作的...

create里面给那么限定条件, 这里可以偷工减料什么原理?!!! 希望能早点搞明白!!!

不过anyway, 恭喜自己找到最简约版的写法?! 


P.S. 

我猜, 估计可能是因为before_action限定了只能是注册用户才能改动...哦, 不是...估计是因为我设定了只显示current_user自己的post页面, 才导致从view上面的button们点击这条途径无法对此user的post动手脚. 找到了post_id的话, 非此user也能从后门进来改动post的内容.哦哦哦, 如果是这样的话, 如果我尝试走后门的方法, 估计能用另外一个用户登录的情况下, 在缺失那两个限制条件的情况下直接改动其他user的post!!!


尝试我的猜想

卧槽...我在用户A登录的情况下复制了edit的页面

http://localhost:3000/groups/9/posts/1/edit

然后登出, 用用户B登录, 然后复制这个网址, 真的可以改动用户A的post内容!!! 而且post改动完成后, 还是回到用户B的accout_posts的页面(显示用户B的全部posts的页面),查看用户A的post, 内容真的被改动了!

简直了! 我猜想是对的!!! 


First Try

试试看, 如果只加回去@post.user = current_user会如何


居然还是能改内容, 而且显示在用户B的post页面里面了, 之前用户B的post只有两条. 没有加

@post.user = current_user

这条的时候, 能走后门改动, 而且改动后的post还不会显示在用户B的posts页面里面...妈啊~有趣!!!变成判断是current_user改动的就是显示在这里, 好奇此条是否显示在用户A的页面?


妈呀, 用户A的页面上这两条被用户B走后门改动掉的post都消失了, 不显示在这里了!!!


Second Try

在user这条代码保留的情况下, 继续加回去@post.group = @group 看看效果


用户B的页面还是能继续显示耶...妈呀...看看用户A的情况


改动的那条, edit后又跑去用户B那里了哈哈哈哈!!


虽然没有搞清楚@post.group = @group的作用,  但我知道要多加一条限制, 就是只有current user能做改动? 不对, 不是current_user, 而是创建人本人才可以改动...这是before_action要写多一个限制? 或者是要设置一个什么条件, 要建一个表单, 链接user跟post的表单,对应关系也写进code才能保证走后门的事件不会发生...这个嘛...三刷的时候再尝试吧...现在超级困. 先这样哈哈哈哈

不让走后门事件发生, 可以参考Rails101教程的5.5, 会有解法哦



新的发现


尝试了一下, 发现文章会从之前的创建者转移到 后来"走后门"改动文章的账户下, 是因为这条代码

update之中我写了一条

@post.user = current_user

就是把post的创建人从"之前的"改变成后来"走后门改动"的人的...这条代码删掉后(前面加 # disable掉后), 创建人就不会变动了, 我觉得估计这代码在update中可以保持无效状态. 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容

  • 有一个疑问, 难到要def show后才能进行edit以及update的定义, 最后才能work咩? 带着疑问尝试...
    RealAnalysis阅读 156评论 0 0
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,938评论 2 89
  • width: 65%;border: 1px solid #ddd;outline: 1300px solid #...
    邵胜奥阅读 4,825评论 0 1
  • Web框架之Django: (1)简介: Django是一个由Python写成开源的重量级Web应用框架,采用MT...
    老肖阅读 3,057评论 0 18
  • 姓名:王丽 组别:第377期六项精进努力二组组员 【日精进打卡第83天】 【知-学习】 背诵《大学》开篇5遍共10...
    天黑黑_e3af阅读 118评论 0 0