• NULLS LAST

开发时候,我们往往需要对一个表某些字段进行排序,这些字段难免存在为null的值,例如:

@answers = Answer.order("course_id DESC")

注意上面代码,在Mysql里面返回顺序是这样的,存在course_id排在前面,course_id为null排在后面,在PG却相反,所以这个时候需要这样来写:

@ansers = Answer.order("course_id DESC NULLS LAST")
  • Order column 必须被select

还是同样排序问题,排序中我们也经常会joins另外表,对于另外表得字段进行排序,例如:

@answers = Answer.joins(:broadcast_records).order("broadcast_records.id desc")

上面代码无论是在Mysql还是PG都不会出错的,但要是加上uniq或者select(“DISTINCT”),例如:

@answers = Answer.joins(:broadcast_records).order("broadcast_records.id desc").uniq
@answers = Answer.joins(:broadcast_records).order("broadcast_records.id desc").select("DISTINCT answers.*")

这时就会抛出以下的错误(恭喜你,你又可能导致一个线上bug出现了):

PG::InvalidColumnReference: ERROR:  for SELECT DISTINCT, ORDER BY expressions must appear in select list

根据上面错误,就是排序字段必须在select list里面,所以我们可以这样来更改:

@answers = Answer.joins(:broadcast_records).order("broadcast_records.id desc").uniq.select("answers.*, broadcast_records.id")

定制我们自己的 JQuery 插件

### 介绍---一直来使用过的 JQuery 插件很多,也写过一些 JQuery 库的扩展。然而要真正了解插件如何扩展 JQuery 库需要对 JavaScript prototype 属性有一些基本的了解。虽然说不直接使用,但是 JavaScript prototype...… Continue reading

HTML INPUT TYPE

Published on July 26, 2015

HTTP 信封里的文档

Published on July 16, 2015