全栈工程师成长记

编程重新定义人生

第三周遇到的“语法”坑

一如之前在周四的日记里所说,本周的作业难度直线上升,功能的实现全看会不会写代码 —— 用什么语法实现什么功能。这当中包含两方面:一是通过从过去学过的知识里举一反三来实现;二是通过和同学讨论、查看文档、google实现。

总结当然是容易的,实际执行起来可真是一波三折。在看 Rails for zombies 的时候,那些读取数据的写法似乎能看懂得差不多,可真正到项目里写CRUD的时候又懵圈了,因为有多用户权限,各个table之间的关联也开始变得复杂起来,要加入的判断条件也随之增加。

比如新增了 /admin/orders 的后台,如果想让管理员通过 /account/orders/token 查看所有用户的订单,那么原先 oders controller 的 show action 就不能加入 current_user 的判断,否则 admin 查看他人的订单就会报错。但是问题又来了,不加这个判断,就变成所有人都可以看到所有人的订单。

解决的办法是在 show action 里加入 if current_user.admin? 的判断式,如果是 admin 权限就列出所有订单,如果是 user 权限则仅列出 current_user 的订单。

另外想补出的一点是关于admin的true、false状态要用问号来判断, 而不能用类似 if is_admin == "0" 或者 == "1" 这样的写法来判断,初步的理解可能是因为 admin 的 true 、 false 状态是用 boolean 栏位纪录。

总之呢,就这个阶段仅有的知识量来说,每解一道题都是一次烧脑的挑战,除了持续关闭 atom 的代码自动补全功能,还要更多的锻炼自己解决问题的能力。