class Package < ActiveRecord::Base has_many :screenshots, :inverse_of=>:package # Use PostgreSQL's full-text search capability for the user search def self.text_search(query) if query.present? # Add a rank column to each result rank = <<-RANK ts_rank(to_tsvector(packages.name), plainto_tsquery(#{sanitize(query)})) + ts_rank(to_tsvector(packages.description), plainto_tsquery(#{sanitize(query)})) RANK # Do the full-text search and return results by rank where("packages.name @@ :q or packages.description @@ :q", q: query).order("#{rank} desc") else scoped end end end