Guest User

Untitled

a guest
Jul 22nd, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. # Rails 3 Chained Scope Example
  2. def self.matching(column, value)
  3. where(["#{column} like ?", "%#{value}%"])
  4. end
  5.  
  6. def self.order(col, dir="asc")
  7. logger.debug("=======hello! col = #{col} and dir = #{dir}")
  8. sql = case col
  9. when "id"; "id #{dir}"
  10. when "created_at"; "created_at #{dir}"
  11. when "name"; "name #{dir}"
  12. else "id desc"
  13. end
  14. order(sql)
  15. end
  16.  
  17. def self.search(params)
  18. params.delete_if {|key, value| value.blank? }
  19.  
  20. finder = scoped
  21.  
  22. if params[:from_id] && params[:to_id]
  23. finder = finder.where({:id => (params[:from_id]..params[:to_id])})
  24. elsif params[:from_id]
  25. finder = finder.where(:id => params[:from_id])
  26. end
  27. finder = finder.where(:created_at => " >= #{Time.parse(params[:created_from]).to_s(:db)}") if params[:created_from]
  28. finder = finder.where(:created_at => " <= #{Time.parse(params[:created_to]).to_s(:db)}") if params[:created_to]
  29. finder = finder.matching('email', params[:email]) if params[:email].blank
  30. if params[:keyword].blank
  31. finder = finder.matching('company', params[:keyword])
  32. order = nil
  33. elsif !params[:order_by].blank? && !params[:order_dir].blank?
  34. order = "#{params[:order_by]} #{params[:order_dir]}"
  35. end
  36. return finder.paginate(:per_page => 1, :page => params[:page], :order => order )
  37. end
Add Comment
Please, Sign In to add comment