Skip to content

Instantly share code, notes, and snippets.

@joshnesbitt
Created November 12, 2010 16:22
Show Gist options
  • Select an option

  • Save joshnesbitt/674288 to your computer and use it in GitHub Desktop.

Select an option

Save joshnesbitt/674288 to your computer and use it in GitHub Desktop.
# Before:
@avatars = Avatar.order("avatars.name ASC, avatars.name ASC")
@avatars = @avatars.where(["avatars.name like ? or users.email like ? or users.name like ?", params[:term], params[:term], params[:term]]) unless params[:term].blank?
@avatars = @avatars.paginate(:page => params[:page], :per_page => 25)
# After
class Avatar
def self.find_by_something(something, order="name ASC")
['avatars.name LIKE ?', 'users.email LIKE ?', 'users.name LIKE ?'].inject(self.order(order).includes(:user)) do |assoc, cond|
assoc.where(cond, something)
end
end
end
Avatar.find_by_something("Josh").paginate(:page => params[:page], :per_page => 25)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment