Added package.text_search for full-text searching the Package model

This commit is contained in:
Christoph Haas 2013-08-08 21:50:03 +02:00
parent fca503df55
commit ee530072eb

View file

@ -1,3 +1,20 @@
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