让查询变得更优雅_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > 让查询变得更优雅

让查询变得更优雅

 2011/9/22 8:13:39  jsntghf  http://2015.iteye.com  我要评论(0)
  • 摘要:RailsWhere可以让代码变得更简洁。看一下插件的自述文件。===ReturningSQLsql=Where.new('x=?',5).and(Where.new('x=?',6).or('x=?',7)).to_s#returns(x=5)and((x=6)or(x=7))===Buildingacomplicatedwhereclausemadeeasydefget_search_query_stringwhere=Where.newwhere.and('users
  • 标签:优雅

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)
?
发表评论
用户名: 匿名