From cb681883f887569d202c1e38da93833bb7b8d4d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baza=CC=81n?= Date: Tue, 29 Mar 2016 18:25:44 +0200 Subject: [PATCH] adds pg_search to spending proposals --- app/models/spending_proposal.rb | 13 +++++++++++++ ...0329160106_add_tsvector_to_spending_proposals.rb | 8 ++++++++ db/schema.rb | 4 +++- 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20160329160106_add_tsvector_to_spending_proposals.rb diff --git a/app/models/spending_proposal.rb b/app/models/spending_proposal.rb index 534ce9533..3e461518c 100644 --- a/app/models/spending_proposal.rb +++ b/app/models/spending_proposal.rb @@ -2,6 +2,7 @@ class SpendingProposal < ActiveRecord::Base include Measurable include Sanitizable include Taggable + include Searchable apply_simple_captcha acts_as_votable @@ -53,6 +54,18 @@ class SpendingProposal < ActiveRecord::Base results.includes(:geozone, administrator: :user, valuators: :user) end + def searchable_values + { title => 'A', + author.username => 'B', + geozone.try(:name) => 'B', + description => 'C' + } + end + + def self.search(terms) + self.pg_search(terms) + end + def self.by_geozone(geozone) if geozone == 'all' where(geozone_id: nil) diff --git a/db/migrate/20160329160106_add_tsvector_to_spending_proposals.rb b/db/migrate/20160329160106_add_tsvector_to_spending_proposals.rb new file mode 100644 index 000000000..080a8ebc9 --- /dev/null +++ b/db/migrate/20160329160106_add_tsvector_to_spending_proposals.rb @@ -0,0 +1,8 @@ +class AddTsvectorToSpendingProposals < ActiveRecord::Migration + + def change + add_column :spending_proposals, :tsv, :tsvector + add_index :spending_proposals, :tsv, using: "gin" + end + +end diff --git a/db/schema.rb b/db/schema.rb index b5daf6abd..55021dfa0 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160329115418) do +ActiveRecord::Schema.define(version: 20160329160106) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -313,10 +313,12 @@ ActiveRecord::Schema.define(version: 20160329115418) do t.string "time_scope" t.datetime "unfeasible_email_sent_at" t.integer "cached_votes_up" + t.tsvector "tsv" end add_index "spending_proposals", ["author_id"], name: "index_spending_proposals_on_author_id", using: :btree add_index "spending_proposals", ["geozone_id"], name: "index_spending_proposals_on_geozone_id", using: :btree + add_index "spending_proposals", ["tsv"], name: "index_spending_proposals_on_tsv", using: :gin create_table "taggings", force: :cascade do |t| t.integer "tag_id"