`
jsntghf
  • 浏览: 2476388 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

让查询变得更优雅

阅读更多

RailsWhere可以让代码变得更简洁。

 

看一下插件的自述文件。


=== Returning SQL

 sql = Where.new('x=?',5).and( Where.new('x=?',6).or('x=?',7)).to_s
 # returns (x=5) and ( (x=6) or (x=7) ) 
 
=== Building a complicated where clause made easy
 
 def get_search_query_string
   where = Where.new
   where.and('users.first_name like ?', params[:search_first_name] + '%') unless params[:search_first_name].blank?
   where.and('users.last_name like ?', params[:search_last_name] + '%') unless params[:search_last_name].blank?
 
   status_where = Where.new
   for status in params[search_statuses].split(',')
     status_where.or 'status=?', status
   end
   where.and status_where unless status_where.blank?
 
   where.to_s
 end
 
 User.find(:all, :conditions => get_search_query_string)
 
=== Inline
 
 User.find(:all, :conditions => Where.new('first_name like ?', 'Tim').and('last_name like ?', 'Harper'))

Rails2.2.2下可以直接运行,Rails2.3.4的话,需要进行小小的改动:

# RAILS_ROOT/vendor/railswhere/lib/where.rb

# 2.2.2
@criteria = ActiveRecord::Base.send(:sanitize_sql_array, criteria)

# 2.3.4
@criteria = ActiveRecord::Base.send(:sanitize_sql_array, criteria, nil)
 
分享到:
评论

相关推荐

    十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统.pdf

    而 Elasticsearch将 Lucene 作为其核心来实现所有索引和搜索的功能,通过简单的 RESTful 语法来隐藏掉 Lucene 的复杂性,从而让全文搜索变得简单 ES在Lucene基础上,提供了一些分布式的实现:集群,分片,复制等。 ...

    产品目录查询展示响应式网页模板-适配移动端-HTML源码.zip

    这套源码融合了最新技术,让搭建一个专业级别的网站变得轻而易举,适合从个人品牌推广到企业级项目展示的各种需求。 它的设计理念不仅注重视觉美感,还兼顾了操作便捷性,让非技术背景的用户也能轻松管理和更新网站...

    HTML网站源码-租车车型查询平台网页模板-响应式源码.zip

    这套源码融合了最新技术,让搭建一个专业级别的网站变得轻而易举,适合从个人品牌推广到企业级项目展示的各种需求。 它的设计理念不仅注重视觉美感,还兼顾了操作便捷性,让非技术背景的用户也能轻松管理和更新网站...

    web前端大作业-航班查询机票预订响应式网页模板-界面适配移动设备-HTML源码.zip

    面对大学生朋友们的课程设计和毕业设计挑战,我们精心准备了一份Web前端大作业——一套...选择我们的响应式网站HTML源码文件,让您的项目搭建变得轻松而高效。立即行动,让您的学术旅程更加顺畅,一起迈向成功的彼岸!

    easyfast:EasyFast PHP框架-ORM,RESTful,MVC,查询对象

    EasyFast PHP是一个框架,它使用简单而优雅的语法使PHP编程变得轻松快捷。 EasyFast PHP致力于消除使用面向对象的所有麻烦。 在与ORM(对象关系映射)一起使用的简单但健壮的界面的背后,您会发现一个令人难以置信...

    C#编程高并发的几种处理方法详解

    并发(英文Concurrency),其实是一个很泛的概念,字面意思就是...不过在.NET 4.5 及以上框架中引入的async/await关键字(在.NET 4.0中通过添加Microsoft.Bcl.Async包也可以使用),让编写异步代码变得容易和优雅。通

    java源码嵌套for循环-SweetBlue:Android上的BLE,简单的方法。现在已弃用。请访问网站以获取有关新版本的信息

    是一个全面的抽象,它将所有麻烦的行为推到一个干净的界面后面,并在底层堆栈变得太不稳定以至于无法处理时优雅地降级。 它建立在几个商业 BLE 项目来之不易的经验的基础上,并提供了许多透明的解决方法来解决烦人和...

    fermor:快速不变的内存中图形数据库。 很棒的遍历

    与Pacer相比,Fermor的重量更轻,更灵活,更简单且速度更快,尽管Pacer(截至几年前)本身通常比我所见过的其他图形遍历机制快得多。 与遍历库捆绑在一起的是(目前)非常初级(但仍然有用)的快速不可变的内存中有...

    CodeIgniter:php敏捷开发框架web快速开发详解

    CI 有很多优点:免费,轻量级,容易安装,它能使你的编程生涯变得很轻松。 这一章我们会告诉你: CI 能为你做什么? 什么是“框架”?CI 为什么能被称为框架? “开源”商业模式。 CI 的某些不足(是的,它并不...

    二十三种设计模式【PDF版】

    这些模式解决特定的设计问题,使面向对象设计更灵活、优雅,最终复用性更 好。它们帮助设计者将新的设计建立在以往工作的基础上,复用以往成功的设计方案。 一个熟悉这些模式的设计者不需要再去发现它们,而能够...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    先让网站能够正常工作于尽可能旧的浏览器上,然后不断为它在新型浏览器上实现更多的增强和改进。 Viewport 移动设备上的Viewport就是设备的屏幕上能用来显示网页的一块区域,即浏览器上用来显示网页的那部分区域。...

    java开源包1

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包11

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包2

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包3

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包6

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包5

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包10

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包4

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

Global site tag (gtag.js) - Google Analytics