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
- Rails的最佳实践【一】
- Rails的最佳实践【一】
- 十二个最重要的J2EE最佳实践(一)
- MySQL 的 优化条最佳实践一
- Ruby for Rails 最佳实践Ⅰ
- Ruby for Rails 最佳实践Ⅱ
- Ruby for Rails 最佳实践Ⅲ
- Ruby for Rails 最佳实践Ⅳ
- Ruby for Rails 最佳实践Ⅴ
- Ruby for Rails 最佳实践Ⅵ
- Ruby for Rails 最佳实践Ⅶ
- Ruby for Rails 最佳实践Ⅷ
- Ruby for Rails 最佳实践Ⅸ
- Ruby for Rails 最佳实践Ⅹ
- Ruby for Rails 最佳实践Ⅺ
- Ruby for Rails 最佳实践Ⅻ
- Ruby for Rails 最佳实践ⅩⅢ
- Ruby for Rails 最佳实践ⅩⅣ
- 避免全局变量!
- 顺序表的基本操作
- android导航条上面点击返回按钮返回上一个状态(从activity返回fragment)
- (java大数)NCPC2015.4.16,C.Catalan Square
- struts2中文乱码
- Rails的最佳实践【一】
- yahoo 交易数据
- QT5.4.1移动开发序
- Windows系统进程
- JAVA学习第3天(3)static 关键字
- linux 网络基础
- EA窍门——如何设置不同包中元素之间的关系
- Git操作-分支管理(一)
- ZOJ题目分类