aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/blog_post.rb3
-rw-r--r--db/migrate/3_acts_as_taggable_on_migration.rb28
-rw-r--r--refinerycms-blog.gemspec1
-rw-r--r--spec/models/blog_posts_spec.rb6
4 files changed, 38 insertions, 0 deletions
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