20 lines
655 B
Ruby
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
|