Rails的最佳实践【一】

来源:互联网 发布:java面试宝典2015 三 编辑:程序博客网 时间:2024/05/10 17:48


一、命名的scope

在Model中加

scope :recent, where().order()

然后在Controller里面用

Model.recent

就能调用查询了,scope可以把一些复杂的查询方法包到一起方便代码的维护

二、有lambda的scope

如果想在recent的时候传一些参数,比如限制查询的limit数量,需要加上lambda

scope :recent, lambda { |num = nil| where().order().limit(num) }

这样就能在Controller里面这样

Model.recent(5)

如果不传参数就会默认令num=nil,此时会查询所有的数据

三、默认的scope

default_scope :recent, where().order


在Controller中只要调用查询方法就会执行recent动作,不用在Controller里面手动调用recent了

四、Model的create传scope


current_user.followings.create!(params[:following])

这样就不用Following.new并把current_user传给new出来的Following再保存了。

五、跳过filter过滤


如果想指定一个页面可以随便被任何用户访问,那么我们应该这样

before_filter :require_login, :except => [:show]

这样Controller里面的show方法在执行前就不会要求用户先登陆再说了

六,胖胖的Model和瘦瘦的Controller


将复杂的逻辑业务封装到Model中是一个很好的习惯,保持Controller中代码的干净更利于维护

重构之前的代码:

重构之后的代码:


0 0