383任務復盤

image.png

一、什么是383任務矩欠?

好牛逼的名字财剖,有木有,哈哈癌淮,其實就是給chat和tag之間加個中間model躺坟,就像上面圖片所說的,增加Chat::Tag模型

本來打算9.6~9.8號3天完成的乳蓄,結果卻是這樣:

image.png

到9.25號才完成咪橙,花了20天才完成,7倍啊栓袖,我也是醉了匣摘。

二、分析一下原因吧裹刮?

總的來說音榜,個人原因居多,自己水平不行啊捧弃,客觀原因可能就是微信上問問題效率太慢赠叼,而且github上回復也慢呢

仔細分析下犯的錯誤吧。數(shù)了一下违霞,至少30個以上的錯誤嘴办,這里選擇31個比較有代表性的。

1买鸽、不小心把本地的Gemfile.lock給上傳了

image.png

2涧郊、chat/customer.rb忘記加accepts_nested_attributes_for、json接口和customers_tags_attributes屬性


image.png

首先眼五,accepts_nested_attributes_for :customers_tags是為了讓customers_tags的屬性也能和customers屬性一樣被更新妆艘、刪除

其次,json_options是序列化的參數(shù)看幼,到時候h5頁面可能會用到

最后批旺,customers_tags_attributes應該是這樣寫:

[ customers_tags_attributes: %i[ id tag_id _destroy ] ]

如果不加的話,怎么傳參數(shù)啊诵姜,id是customers_tags的id汽煮,_destroy可以刪除本記錄。

3、沒有加validate

image.png

4暇赤、字母序

image.png

5心例、少了acts_as_paranoid(現(xiàn)在知道了這是軟刪除)

image.png

6、tag也要加上validate

image.png

當時沒有認真想想tag添加的時候也要驗證一下在未刪除情況下唯一性翎卓、是否存在

7契邀、這個忘記加dependent::restrict_with_error了(現(xiàn)在知道了摆寄,當tag被customer使用時是不能刪除的失暴,當出現(xiàn)有關聯(lián)的tag被刪除時,restrict_with_error會限制并報錯)

image.png

8微饥、字母序

image.png

9逗扒、本來抄系統(tǒng)里別的文件的代碼,但是感覺enabled的默認值應該是true才對欠橘,于是將原來的false改成true矩肩,誰知道數(shù)據(jù)庫的默認值都為false,由Ruby代碼控制實際默認值的

image.png

10肃续、lock_version是樂觀鎖黍檩,忘加了

image.png

11、不知道還能這么變(現(xiàn)在知道了始锚,可以寫成這樣刽酱,代碼更少,但是不知道為什么要要加deleted_at_and_customer_id_and_tag_id)

image.png

12瞧捌、不知道Rails標準(現(xiàn)在知道了棵里,如果要加索引,可以這樣)

image.png

13姐呐、少了allow_destroy(加上這個就也能把關聯(lián)的屬性刪除)

image.png

14殿怜、customer對應的是多個customers_tags,這里我直接寫成了一個tag_id曙砂,明顯不對嘛头谜,在寫這個的時候,還是20天前鸠澈,那時候?qū)@些關聯(lián)啊懵懵懂懂的柱告,現(xiàn)在基本都明白了

為嘛json_options不用寫

image.png

15、寫多了一行款侵,太粗心了

image.png

16末荐、這個也是對acts_as_paranoid不知道,所以犯了這么個錯誤

image.png

17新锈、要加上validate

image.png

18甲脏、又是字母序

image.png

19、 又缺少acts_as_paranoid

![image.png](http://upload-im ages.jianshu.io/upload_images/1866870-eb68997de2bf304c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)_

21、這樣肯定不對啊块请,customer的view怎么會有tag_id的字段呢娜氏?當時完全是懵逼的狀態(tài)。現(xiàn)在知道了customer不只有一個tag墩新,所以應該是多維數(shù)組的形式來傳參數(shù)

image.png

22贸弥、這也不對

zhe'ye

23、當時完全不會做海渊,劍爸5分鐘寫出來的绵疲,后來還是需要修改一下。

因為當時是通過chat/cusomer修改bag/customer臣疑,有且只有這樣的邏輯盔憨,所以沒加上chat/cusomter本身的修改。

另外讯沈,chat/customer和bag/customer的關聯(lián)是polymorphic的郁岩,如果用accepts_nested_attributes_for 需要手動指定type,前端就比較復雜缺狠。

image.png

后來改成這樣了

    @customer = customers.find_by(user_name: params[:id]) || customers.find(params[:id])
    @saved = model.transaction do
      @customer.attributes = param.permit(model.admin_fields)
      @customer.customizable&.add_remark!(param[:remark_name])
      @customer.save!
    end

24问慎、這句話啥意思

image.png

有很多疑問,比如什么是customizable挤茄,什么是polymorphic類型

customizable是customer的多態(tài)類型如叼,那么,可以這樣定義:

belongs_to :chat

為什么polymorphic類型的關聯(lián)不能直接用accepts_nested_attributes_for

25驮樊、學習了

image.png

26薇正、系統(tǒng)會自動讀取chat/customers_tag的表名

image.png

27、學習了


image.png

28囚衔、如果換成t.格式的話就要寫在creat_table里面

image.png

29挖腰、為什么要加上chatroom.find(user_name:params[:id])呢?

image.png

user_name是微信用戶登錄的識別碼

30练湿、method::get 可以省略 這是因為默認就是get方式

image.png

31猴仑、讓我用transaction寫,但是不會寫啊肥哎,后來劍爸寫的

image.png

第一次做這么完整一點的任務辽俗,包含三個model,多對多的關系篡诽。

收獲:讓我了解了很多Rails的功能和特性

1崖飘、關聯(lián)的Model如果加上touch: true,那么和這個Mode關聯(lián)的另外一個model在更新時杈女,這個model的updated_at也會被更新

2朱浴、inverse_of可以避免重復查詢

3吊圾、accepts_nested_attributes_for可以更新、刪除關聯(lián)的屬性

4翰蠢、transaction可以直接寫成一個代碼塊

@saved = model.transaction do
 ....
end

5项乒、acts_as_paranoid 是軟刪除的gem

6、polymorphic多態(tài)讓model更簡潔

7梁沧、validate的相關用法

比如uniqueness檀何、scope、existence廷支、presence

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末频鉴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子酥泞,更是在濱河造成了極大的恐慌砚殿,老刑警劉巖啃憎,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芝囤,死亡現(xiàn)場離奇詭異,居然都是意外死亡辛萍,警方通過查閱死者的電腦和手機悯姊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贩毕,“玉大人悯许,你說我怎么就攤上這事』越祝” “怎么了先壕?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谆甜。 經(jīng)常有香客問我垃僚,道長,這世上最難降的妖魔是什么规辱? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任谆棺,我火速辦了婚禮,結果婚禮上罕袋,老公的妹妹穿的比我還像新娘改淑。我一直安慰自己,他們只是感情好浴讯,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布朵夏。 她就那樣靜靜地躺著,像睡著了一般榆纽。 火紅的嫁衣襯著肌膚如雪仰猖。 梳的紋絲不亂的頭發(fā)上询吴,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音亮元,去河邊找鬼猛计。 笑死,一個胖子當著我的面吹牛爆捞,可吹牛的內(nèi)容都是我干的奉瘤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼煮甥,長吁一口氣:“原來是場噩夢啊……” “哼盗温!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起成肘,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤卖局,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后双霍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砚偶,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年洒闸,在試婚紗的時候發(fā)現(xiàn)自己被綠了染坯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡丘逸,死狀恐怖单鹿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情深纲,我是刑警寧澤仲锄,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站湃鹊,受9級特大地震影響儒喊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涛舍,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一澄惊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧富雅,春花似錦掸驱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蛤奢,卻和暖如春鬼癣,著一層夾襖步出監(jiān)牢的瞬間陶贼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工待秃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拜秧,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓章郁,卻偏偏與公主長得像枉氮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子暖庄,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

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