问题描述:
2, 在model层中,不需要查数据库,尽量不要查数据库,比如有如下一种情况:
用户不管登录与否,都能发表评论。 在comment表里有一个字段, user_id 指向 user 表的外键,但是 user_id 可能为 0
所有在view层去 评论的作者时,该如何操作呢? comment.user.try(:username)
在构建数据库的时候,应该注意的问题
问题解答:
1, 数据库表应该添加 index 索引 , 并且要限制索引的length , 如下:
add_index :channels, :token, :length => 10
2, 在model层中,不需要查数据库,尽量不要查数据库,比如有如下一种情况:
用户不管登录与否,都能发表评论。 在comment表里有一个字段, user_id 指向 user 表的外键,但是 user_id 可能为 0
所有在view层去 评论的作者时,该如何操作呢? comment.user.try(:username)
comment.user.try(:username) || "XXX"
这条语句本身是有问题的。 它会这样执行,先查询一次 select * from user where user.id = 0 , 然后在判断 是否有这个对象 ,这样浪费时间,应该修改成
(self.user_id == 0) ? "XXX" : self.user.try(:username)