Rails的最佳实践【一】

一、命名的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中代码的干净更利于维护

重构之前的代码:

重构之后的代码:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值