全栈工程师成长记

编程重新定义人生

关于s这个磨人的小妖精

在课前练习的早期,sean助教就说了一个关于单复数的普遍常识:
belongs_to 后面通常是单数 (属于什么,比如一个group属于一个用户建立的,一个post属于一个用户建立的);
has_may 后面通常是复数 (拥有很多,比如一个用户拥有很多posts,也可以有很多groups,一个group也可以有很多posts)。
这样在group model里面基本上你就会知道是该加上这个s还是去掉这个s,该是group还是groups、post还是posts了。

从model的坑里跳出来之后,就万事大吉了吗?这可不一定,在Groups Controller里面,index这个action是要列出所有的group,所以要@groups = Group.all。而new、edit、show、update等action则是对单个group进行操作,所以应该用@group。今天隔壁同学的new actin就被写成了@groups = Group.new,结果页面就报错了,这个多出来的s大概是atom这个高级编辑器自动补上的,因为上个def index刚刚才用到@groups嘛,它就很“智能”的觉得这个大概就是你想要的。所以为了避免这样的坑,不管atom智不智能,你自己都要知道这当中的原理,才能排除故障。

PS:昨天笑来老师说我看你们一堆新人一上来就用atom这么高级的编辑器,这个(代码自动补全的功能,如果我没理解错的话)对你们编码肌肉的养成可不太好。