From ac7a6f6636912635835ff73320ded4ad1cc73746 Mon Sep 17 00:00:00 2001 From: Joe Sak Date: Fri, 11 Mar 2011 12:58:58 -0600 Subject: Acts as taggable installed --- app/models/blog_post.rb | 3 +++ db/migrate/3_acts_as_taggable_on_migration.rb | 28 +++++++++++++++++++++++++++ refinerycms-blog.gemspec | 1 + spec/models/blog_posts_spec.rb | 6 ++++++ 4 files changed, 38 insertions(+) create mode 100644 db/migrate/3_acts_as_taggable_on_migration.rb diff --git a/app/models/blog_post.rb b/app/models/blog_post.rb index 1132c8f..db85a70 100644 --- a/app/models/blog_post.rb +++ b/app/models/blog_post.rb @@ -1,3 +1,5 @@ +require 'acts-as-taggable-on' + class BlogPost < ActiveRecord::Base default_scope :order => 'published_at DESC' @@ -6,6 +8,7 @@ class BlogPost < ActiveRecord::Base belongs_to :author, :class_name => 'User', :foreign_key => :user_id has_many :comments, :class_name => 'BlogComment', :dependent => :destroy + acts_as_taggable has_many :categorizations has_many :categories, :through => :categorizations, :source => :blog_category diff --git a/db/migrate/3_acts_as_taggable_on_migration.rb b/db/migrate/3_acts_as_taggable_on_migration.rb new file mode 100644 index 0000000..1661061 --- /dev/null +++ b/db/migrate/3_acts_as_taggable_on_migration.rb @@ -0,0 +1,28 @@ +class ActsAsTaggableOnMigration < ActiveRecord::Migration + def self.up + create_table :tags do |t| + t.string :name + end + + create_table :taggings do |t| + t.references :tag + + # You should make sure that the column created is + # long enough to store the required class names. + t.references :taggable, :polymorphic => true + t.references :tagger, :polymorphic => true + + t.string :context + + t.datetime :created_at + end + + 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/refinerycms-blog.gemspec b/refinerycms-blog.gemspec index e2a41fe..42ba28d 100644 --- a/refinerycms-blog.gemspec +++ b/refinerycms-blog.gemspec @@ -11,6 +11,7 @@ Gem::Specification.new do |s| s.add_dependency 'refinerycms', '>= 0.9.8' s.add_dependency 'filters_spam', '~> 0.2' + s.add_dependency 'acts-as-taggable-on', '~> 2.0.6' s.files = %w( app diff --git a/spec/models/blog_posts_spec.rb b/spec/models/blog_posts_spec.rb index f83dc91..523ddf3 100644 --- a/spec/models/blog_posts_spec.rb +++ b/spec/models/blog_posts_spec.rb @@ -47,6 +47,12 @@ describe BlogPost do end end + describe "tags" do + it "acts as taggable" do + Factory(:post).should respond_to(:tag_list) + end + end + describe "authors" do it "are authored" do BlogPost.instance_methods.map(&:to_sym).include? :author -- cgit v1.2.3