debshots/app/models/package.rb

20 lines
655 B
Ruby

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