From 6adedf45b8a1503a55bee2e1af1f5f2b258cdc86 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Sat, 18 Jul 2015 17:23:00 +0200 Subject: [PATCH] configures act_as_taggable [#8] --- Gemfile | 2 +- Gemfile.lock | 3 +++ app/models/debate.rb | 1 + config/initializers/acts_as_taggable_on.rb | 1 + ...on_migration.acts_as_taggable_on_engine.rb | 25 +++++++++++++++++++ ...ache_to_tags.acts_as_taggable_on_engine.rb | 10 ++++++++ db/schema.rb | 22 +++++++++++++++- 7 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 config/initializers/acts_as_taggable_on.rb create mode 100644 db/migrate/20150718075238_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb create mode 100644 db/migrate/20150718075337_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb diff --git a/Gemfile b/Gemfile index 45f16f7b4..6dd5d0103 100644 --- a/Gemfile +++ b/Gemfile @@ -31,7 +31,7 @@ gem 'devise' # Use Capistrano for deployment # gem 'capistrano-rails', group: :development - +gem 'acts-as-taggable-on' gem "responders" gem 'foundation-rails' diff --git a/Gemfile.lock b/Gemfile.lock index 01408b9c2..9f2595ce7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -36,6 +36,8 @@ GEM minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) + acts-as-taggable-on (3.5.0) + activerecord (>= 3.2, < 5) arel (6.0.2) bcrypt (3.1.10) binding_of_caller (0.7.2) @@ -188,6 +190,7 @@ PLATFORMS ruby DEPENDENCIES + acts-as-taggable-on byebug capybara coffee-rails (~> 4.1.0) diff --git a/app/models/debate.rb b/app/models/debate.rb index 22e15fe3e..4d0bf3ff0 100644 --- a/app/models/debate.rb +++ b/app/models/debate.rb @@ -1,4 +1,5 @@ class Debate < ActiveRecord::Base + acts_as_taggable belongs_to :author, class_name: 'User', foreign_key: 'author_id' validates :title, presence: true diff --git a/config/initializers/acts_as_taggable_on.rb b/config/initializers/acts_as_taggable_on.rb new file mode 100644 index 000000000..ead1691e4 --- /dev/null +++ b/config/initializers/acts_as_taggable_on.rb @@ -0,0 +1 @@ +ActsAsTaggableOn.delimiter = ',' \ No newline at end of file diff --git a/db/migrate/20150718075238_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb b/db/migrate/20150718075238_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb new file mode 100644 index 000000000..2cf5741f8 --- /dev/null +++ b/db/migrate/20150718075238_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb @@ -0,0 +1,25 @@ +# This migration comes from acts_as_taggable_on_engine (originally 1) +class ActsAsTaggableOnMigration < ActiveRecord::Migration + def self.up + create_table :tags do |t| + t.string :name + end + + create_table :taggings do |t| + t.references :tag + t.references :taggable, polymorphic: true + t.references :tagger, polymorphic: true + t.string :context, limit: 128 + t.datetime :created_at + end + + add_index :tags, :name, unique: true + add_index :taggings, :tag_id + add_index :taggings, [:taggable_id, :taggable_type, :context] + end + + def self.down + drop_table :taggings + drop_table :tags + end +end diff --git a/db/migrate/20150718075337_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb b/db/migrate/20150718075337_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb new file mode 100644 index 000000000..6bbd5ab3d --- /dev/null +++ b/db/migrate/20150718075337_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb @@ -0,0 +1,10 @@ +# This migration comes from acts_as_taggable_on_engine (originally 3) +class AddTaggingsCounterCacheToTags < ActiveRecord::Migration + def self.up + add_column :tags, :taggings_count, :integer, default: 0 + end + + def self.down + remove_column :tags, :taggings_count + end +end diff --git a/db/schema.rb b/db/schema.rb index 09fd0d0a7..a9958aba6 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: 20150717164054) do +ActiveRecord::Schema.define(version: 20150718075337) do create_table "debates", force: :cascade do |t| t.string "title" @@ -21,6 +21,26 @@ ActiveRecord::Schema.define(version: 20150717164054) do t.datetime "updated_at", null: false end + create_table "taggings", force: :cascade do |t| + t.integer "tag_id" + t.integer "taggable_id" + t.string "taggable_type" + t.integer "tagger_id" + t.string "tagger_type" + t.string "context", limit: 128 + t.datetime "created_at" + end + + add_index "taggings", ["tag_id"], name: "index_taggings_on_tag_id" + add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context" + + create_table "tags", force: :cascade do |t| + t.string "name" + t.integer "taggings_count", default: 0 + end + + add_index "tags", ["name"], name: "index_tags_on_name", unique: true + create_table "users", force: :cascade do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false