Rails101二刷 8.3的update部分

把edit定義到?jīng)]大問題的感覺

就繼續(xù)嘗試update的定義, 如下截圖的方法可以避開報(bào)錯(cuò), 不過...

把update這樣定義巨厲害...改其中一個(gè)post文章的edit界面內(nèi)容, 全部整個(gè)user post過的文章全部一起改了,連不是group owner的group里的post內(nèi)容都改成一致, 臥槽, 效果太牛了哈哈哈哈哈


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

真的覺得從edit的定義開始就有問題了哈哈哈哈 繼續(xù)試吧.?

我現(xiàn)在真的很想知道去哪里查正確的params們啊哈哈哈哈



Second Try

一通改都不滿意, 然后把edit的內(nèi)容改成如下截圖的

這樣說(shuō)不定定位能準(zhǔn)一些, 別全部的post一起改動(dòng). 嘗試一下. 接著把update的定義改動(dòng)成這樣


結(jié)果還是全體一起變, 媽呀, 太好笑了哈哈哈哈

再嘗試一次! 認(rèn)真觀察一下之前的CRUD里update的部分, 改成如下


終于成了哈哈哈哈哈哈!!!?

不是@post = Post.update(post_params)

而是@post.update(post_params)

整個(gè)就能對(duì)單獨(dú)的post改內(nèi)容了!!! 太high了哈哈哈哈哈 居然把問題解決了哈哈哈哈哈哈哈


彩蛋

接著玩一下, 看看是什么精準(zhǔn)定位到了獨(dú)自的post~~

第一個(gè)改動(dòng)

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


看看效果

嗯, 不會(huì)報(bào)錯(cuò). 但無(wú)論挑選哪個(gè)post改動(dòng), 只能改動(dòng)之前已經(jīng)改動(dòng)的那個(gè)post.?

比如, 之前改了第九條的內(nèi)容. 我現(xiàn)在就算點(diǎn)擊第一個(gè)post的內(nèi)容, 到edit頁(yè)面也不會(huì)顯示第一條post的內(nèi)容, 而是第九條的內(nèi)容. 改動(dòng)內(nèi)容submit后, 回到posts的頁(yè)面也只顯示改動(dòng)了第九條的內(nèi)容. 第一條內(nèi)容紋絲不動(dòng)完全不受影響. 真是神奇哦哈哈哈哈, 這就是params[:group_id]的神奇了吧?!!


第二個(gè)改動(dòng)

把edit改成正確的, 接著試著改一下update的內(nèi)容

刪掉 @post = Post.find(params[:id])這條看看效果


效果是報(bào)錯(cuò), 跳過這步后, 直接找不著北了, 感覺也是post都沒給個(gè)方向


第三個(gè)改動(dòng)

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

改成@post = Post.find(post_params)?

看看效果


看來(lái)這樣是找不到post的id的, 畢竟post_params是我自己定義的調(diào)出post具體內(nèi)容用的代碼, 并不是內(nèi)建的一個(gè)id數(shù)據(jù), 而是一個(gè)復(fù)合型內(nèi)容, 并不是post的id呢~


第四個(gè)改動(dòng)

刪掉@post.group = @group這行代碼

居然完全沒有影響, 我去, 原來(lái)這行不需要的咩?!!!肯定有啥作用吧?!!! 還是說(shuō)在edit已經(jīng)定位完成, 所以這行刪掉沒有影響?! 肯定有啥作用吧?! 在create里面存在一定有用吧? 說(shuō)不定要等我更厲害了才知道它的作用吧...OK,繼續(xù)試


第五個(gè)改動(dòng)

刪掉@post.group = @group這行代碼 的基礎(chǔ)上, 繼續(xù)刪除?@post.user = current_user

就是兩行代碼都一起刪掉, 感覺去掉兩個(gè)限定條件的感覺, 看看效果

完全沒有影響...


最后總結(jié)


最后, 變成這樣了...這樣的update的def版本, 也是能正常運(yùn)作的...

create里面給那么限定條件, 這里可以偷工減料什么原理?!!! 希望能早點(diǎn)搞明白!!!

不過anyway, 恭喜自己找到最簡(jiǎn)約版的寫法?!?


P.S.?

我猜, 估計(jì)可能是因?yàn)閎efore_action限定了只能是注冊(cè)用戶才能改動(dòng)...哦, 不是...估計(jì)是因?yàn)槲以O(shè)定了只顯示current_user自己的post頁(yè)面, 才導(dǎo)致從view上面的button們點(diǎn)擊這條途徑無(wú)法對(duì)此user的post動(dòng)手腳. 找到了post_id的話, 非此user也能從后門進(jìn)來(lái)改動(dòng)post的內(nèi)容.哦哦哦, 如果是這樣的話, 如果我嘗試走后門的方法, 估計(jì)能用另外一個(gè)用戶登錄的情況下, 在缺失那兩個(gè)限制條件的情況下直接改動(dòng)其他user的post!!!


嘗試我的猜想

臥槽...我在用戶A登錄的情況下復(fù)制了edit的頁(yè)面

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

然后登出, 用用戶B登錄, 然后復(fù)制這個(gè)網(wǎng)址, 真的可以改動(dòng)用戶A的post內(nèi)容!!! 而且post改動(dòng)完成后, 還是回到用戶B的accout_posts的頁(yè)面(顯示用戶B的全部posts的頁(yè)面),查看用戶A的post, 內(nèi)容真的被改動(dòng)了!

簡(jiǎn)直了! 我猜想是對(duì)的!!!?


First Try

試試看, 如果只加回去@post.user = current_user會(huì)如何


居然還是能改內(nèi)容, 而且顯示在用戶B的post頁(yè)面里面了, 之前用戶B的post只有兩條. 沒有加

@post.user = current_user

這條的時(shí)候, 能走后門改動(dòng), 而且改動(dòng)后的post還不會(huì)顯示在用戶B的posts頁(yè)面里面...媽啊~有趣!!!變成判斷是current_user改動(dòng)的就是顯示在這里, 好奇此條是否顯示在用戶A的頁(yè)面?


媽呀, 用戶A的頁(yè)面上這兩條被用戶B走后門改動(dòng)掉的post都消失了, 不顯示在這里了!!!


Second Try

在user這條代碼保留的情況下, 繼續(xù)加回去@post.group = @group 看看效果


用戶B的頁(yè)面還是能繼續(xù)顯示耶...媽呀...看看用戶A的情況


改動(dòng)的那條, edit后又跑去用戶B那里了哈哈哈哈!!


雖然沒有搞清楚@post.group = @group的作用,? 但我知道要多加一條限制, 就是只有current user能做改動(dòng)? 不對(duì), 不是current_user, 而是創(chuàng)建人本人才可以改動(dòng)...這是before_action要寫多一個(gè)限制? 或者是要設(shè)置一個(gè)什么條件, 要建一個(gè)表單, 鏈接user跟post的表單,對(duì)應(yīng)關(guān)系也寫進(jìn)code才能保證走后門的事件不會(huì)發(fā)生...這個(gè)嘛...三刷的時(shí)候再嘗試吧...現(xiàn)在超級(jí)困. 先這樣哈哈哈哈

不讓走后門事件發(fā)生, 可以參考Rails101教程的5.5, 會(huì)有解法哦



新的發(fā)現(xiàn)


嘗試了一下, 發(fā)現(xiàn)文章會(huì)從之前的創(chuàng)建者轉(zhuǎn)移到 后來(lái)"走后門"改動(dòng)文章的賬戶下, 是因?yàn)檫@條代碼

update之中我寫了一條

@post.user = current_user

就是把post的創(chuàng)建人從"之前的"改變成后來(lái)"走后門改動(dòng)"的人的...這條代碼刪掉后(前面加 # disable掉后), 創(chuàng)建人就不會(huì)變動(dòng)了, 我覺得估計(jì)這代碼在update中可以保持無(wú)效狀態(tài).?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市恨锚,隨后出現(xiàn)的幾起案子宇驾,更是在濱河造成了極大的恐慌,老刑警劉巖猴伶,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件课舍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡他挎,警方通過查閱死者的電腦和手機(jī)筝尾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)办桨,“玉大人筹淫,你說(shuō)我怎么就攤上這事∧刈玻” “怎么了损姜?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)殊霞。 經(jīng)常有香客問我摧阅,道長(zhǎng),這世上最難降的妖魔是什么脓鹃? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任逸尖,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘娇跟。我一直安慰自己岩齿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布苞俘。 她就那樣靜靜地躺著盹沈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吃谣。 梳的紋絲不亂的頭發(fā)上乞封,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音岗憋,去河邊找鬼肃晚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛仔戈,可吹牛的內(nèi)容都是我干的关串。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼监徘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼晋修!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起凰盔,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤墓卦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后户敬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體落剪,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年山叮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了著榴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屁倔,死狀恐怖脑又,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锐借,我是刑警寧澤问麸,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站钞翔,受9級(jí)特大地震影響严卖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜布轿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一哮笆、第九天 我趴在偏房一處隱蔽的房頂上張望来颤。 院中可真熱鬧,春花似錦稠肘、人聲如沸福铅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)滑黔。三九已至,卻和暖如春环揽,著一層夾襖步出監(jiān)牢的瞬間略荡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工歉胶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留汛兜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓通今,卻偏偏與公主長(zhǎng)得像序无,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子衡创,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容