acts_as_commentable_with_threading 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +1 -1
- data/Gemfile.lock +1 -3
- data/README.md +2 -6
- data/acts_as_commentable_with_threading.gemspec +3 -3
- data/lib/acts_as_commentable_with_threading.rb +11 -11
- data/lib/generators/acts_as_commentable_upgrade_migration/comment.rb +7 -9
- data/lib/generators/acts_as_commentable_with_threading_migration/templates/comment.rb +8 -10
- data/lib/generators/acts_as_commentable_with_threading_migration/templates/migration.rb +1 -1
- data/spec/commentable_spec.rb +23 -0
- metadata +7 -4
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -75,8 +75,6 @@ GEM
|
|
75
75
|
rack (~> 1.0)
|
76
76
|
tilt (~> 1.1, != 1.3.0)
|
77
77
|
sqlite3 (1.3.5)
|
78
|
-
sqlite3-ruby (1.3.3)
|
79
|
-
sqlite3 (>= 1.3.3)
|
80
78
|
thor (0.14.6)
|
81
79
|
tilt (1.3.3)
|
82
80
|
treetop (1.4.10)
|
@@ -95,4 +93,4 @@ DEPENDENCIES
|
|
95
93
|
rails (~> 3.2)
|
96
94
|
rake
|
97
95
|
rspec (~> 1.3)
|
98
|
-
sqlite3
|
96
|
+
sqlite3
|
data/README.md
CHANGED
@@ -81,16 +81,12 @@ Usage
|
|
81
81
|
|
82
82
|
@comment.children
|
83
83
|
|
84
|
-
* If you plan to use the `
|
84
|
+
* If you plan to use the `acts_as_votable` plugin with your comment system be
|
85
85
|
sure to uncomment two things:
|
86
86
|
|
87
|
-
* In `lib/comment.rb` uncomment the line [`
|
88
|
-
|
89
|
-
* In `lib/acts_as_commentable_with_threading.rb` uncomment the line
|
90
|
-
[`include Juixe::Acts::Voteable`][L5] near the top.
|
87
|
+
* In `lib/comment.rb` uncomment the line [`acts_as_votable`][L9].
|
91
88
|
|
92
89
|
[L9]: https://github.com/elight/acts_as_commentable_with_threading/blob/master/lib/generators/acts_as_commentable_with_threading_migration/templates/comment.rb#L9
|
93
|
-
[L5]: https://github.com/elight/acts_as_commentable_with_threading/blob/master/lib/acts_as_commentable_with_threading.rb#L5
|
94
90
|
|
95
91
|
Credits
|
96
92
|
-------
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "acts_as_commentable_with_threading"
|
3
|
-
s.version = "1.1.
|
4
|
-
s.date = "
|
3
|
+
s.version = "1.1.3"
|
4
|
+
s.date = "2013-04-18"
|
5
5
|
s.summary = "Polymorphic comments Rails gem - Rails 3+ only"
|
6
6
|
s.email = "evan@tripledogdare.net"
|
7
7
|
s.homepage = "http://github.com/elight/acts_as_commentable_with_threading"
|
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.add_development_dependency 'rake'
|
14
14
|
s.add_development_dependency 'bundler', '~> 1.0'
|
15
15
|
s.add_development_dependency 'rspec', '~> 1.3'
|
16
|
-
s.add_development_dependency 'sqlite3
|
16
|
+
s.add_development_dependency 'sqlite3'
|
17
17
|
s.add_development_dependency 'rails', '~> 3.0'
|
18
18
|
|
19
19
|
s.add_dependency 'activerecord', '>= 3.0'
|
@@ -2,12 +2,11 @@ require 'active_record'
|
|
2
2
|
require 'awesome_nested_set'
|
3
3
|
ActiveRecord::Base.class_eval do
|
4
4
|
include CollectiveIdea::Acts::NestedSet
|
5
|
-
#include Juixe::Acts::Voteable #<-- uncomment this if you have installed and wish to use the acts_as_voteable plugin
|
6
5
|
end
|
7
6
|
|
8
7
|
#
|
9
8
|
unless ActiveRecord::Base.respond_to?(:acts_as_nested_set)
|
10
|
-
ActiveRecord::Base.send(:include, CollectiveIdea::Acts::NestedSet::Base)
|
9
|
+
ActiveRecord::Base.send(:include, CollectiveIdea::Acts::NestedSet::Base)
|
11
10
|
end
|
12
11
|
|
13
12
|
# ActsAsCommentableWithThreading
|
@@ -17,12 +16,13 @@ module Acts #:nodoc:
|
|
17
16
|
|
18
17
|
module ClassMethods
|
19
18
|
def acts_as_commentable
|
20
|
-
has_many :comment_threads, :class_name => "Comment", :as => :commentable
|
19
|
+
has_many :comment_threads, :class_name => "Comment", :as => :commentable
|
20
|
+
before_destroy { |record| record.root_comments.destroy_all }
|
21
21
|
include Acts::CommentableWithThreading::LocalInstanceMethods
|
22
22
|
extend Acts::CommentableWithThreading::SingletonMethods
|
23
23
|
end
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
# This module contains class methods
|
27
27
|
module SingletonMethods
|
28
28
|
# Helper method to lookup for comments for a given object.
|
@@ -30,34 +30,34 @@ module Acts #:nodoc:
|
|
30
30
|
def find_comments_for(obj)
|
31
31
|
Comment.where(:commentable_id => obj.id, :commentable_type => obj.class.base_class).order('created_at DESC')
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
# Helper class method to lookup comments for
|
35
|
-
# the mixin commentable type written by a given user.
|
35
|
+
# the mixin commentable type written by a given user.
|
36
36
|
# This method is NOT equivalent to Comment.find_comments_for_user
|
37
37
|
def find_comments_by_user(user)
|
38
38
|
commentable = self.base_class.name.to_s
|
39
39
|
Comment.where(:user_id => user.id, :commentable_type => commentable).order('created_at DESC')
|
40
40
|
end
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
module LocalInstanceMethods
|
44
|
-
|
44
|
+
|
45
45
|
# Helper method to display only root threads, no children/replies
|
46
46
|
def root_comments
|
47
47
|
self.comment_threads.where(:parent_id => nil)
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
# Helper method to sort comments by date
|
51
51
|
def comments_ordered_by_submitted
|
52
52
|
Comment.where(:commentable_id => id, :commentable_type => self.class.name).order('created_at DESC')
|
53
53
|
end
|
54
|
-
|
54
|
+
|
55
55
|
# Helper method that defaults the submitted time.
|
56
56
|
def add_comment(comment)
|
57
57
|
comments << comment
|
58
58
|
end
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
@@ -1,12 +1,12 @@
|
|
1
1
|
class Comment < ActiveRecord::Base
|
2
2
|
acts_as_nested_set :scope => [:commentable_id, :commentable_type]
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
validates :body, :presence => true
|
5
|
+
validates :user, :presence => true
|
6
6
|
|
7
7
|
# NOTE: install the acts_as_votable plugin if you
|
8
8
|
# want user to vote on the quality of comments.
|
9
|
-
#
|
9
|
+
#acts_as_votable
|
10
10
|
|
11
11
|
belongs_to :commentable, :polymorphic => true
|
12
12
|
|
@@ -17,12 +17,10 @@ class Comment < ActiveRecord::Base
|
|
17
17
|
# by passing a commentable object, a user_id, and comment text
|
18
18
|
# example in readme
|
19
19
|
def self.build_from(obj, user_id, comment)
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
c.user_id = user_id
|
25
|
-
c
|
20
|
+
new \
|
21
|
+
:commentable => obj,
|
22
|
+
:body => comment,
|
23
|
+
:user_id => user_id
|
26
24
|
end
|
27
25
|
|
28
26
|
#helper method to check if a comment has children
|
@@ -1,12 +1,12 @@
|
|
1
1
|
class Comment < ActiveRecord::Base
|
2
2
|
acts_as_nested_set :scope => [:commentable_id, :commentable_type]
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
validates :body, :presence => true
|
5
|
+
validates :user, :presence => true
|
6
6
|
|
7
7
|
# NOTE: install the acts_as_votable plugin if you
|
8
8
|
# want user to vote on the quality of comments.
|
9
|
-
#
|
9
|
+
#acts_as_votable
|
10
10
|
|
11
11
|
belongs_to :commentable, :polymorphic => true
|
12
12
|
|
@@ -17,17 +17,15 @@ class Comment < ActiveRecord::Base
|
|
17
17
|
# by passing a commentable object, a user_id, and comment text
|
18
18
|
# example in readme
|
19
19
|
def self.build_from(obj, user_id, comment)
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
c.user_id = user_id
|
25
|
-
c
|
20
|
+
new \
|
21
|
+
:commentable => obj,
|
22
|
+
:body => comment,
|
23
|
+
:user_id => user_id
|
26
24
|
end
|
27
25
|
|
28
26
|
#helper method to check if a comment has children
|
29
27
|
def has_children?
|
30
|
-
self.children.
|
28
|
+
self.children.any?
|
31
29
|
end
|
32
30
|
|
33
31
|
# Helper class method to lookup all comments assigned
|
data/spec/commentable_spec.rb
CHANGED
@@ -5,6 +5,29 @@ describe "A class that is commentable" do
|
|
5
5
|
Commentable.new.comment_threads.should be_a_kind_of(Enumerable)
|
6
6
|
end
|
7
7
|
|
8
|
+
describe "when is destroyed" do
|
9
|
+
before :each do
|
10
|
+
@user = User.create!
|
11
|
+
@commentable = Commentable.create!
|
12
|
+
@comment = Comment.create!(:user => @user, :commentable => @commentable, :body => 'blargh')
|
13
|
+
end
|
14
|
+
|
15
|
+
it "also destroys its root comments" do
|
16
|
+
@commentable.destroy
|
17
|
+
Comment.all.should_not include(@comment)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "also destroys its nested comments" do
|
21
|
+
child = Comment.new(:body => "This is a child", :commentable => @commentable, :user => @user)
|
22
|
+
child.save!
|
23
|
+
child.move_to_child_of(@comment)
|
24
|
+
|
25
|
+
@commentable.destroy
|
26
|
+
Comment.all.should_not include(@comment)
|
27
|
+
Comment.all.should_not include(child)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
8
31
|
describe "special class finders" do
|
9
32
|
before :each do
|
10
33
|
@user = User.create!
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_commentable_with_threading
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2013-04-18 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rake
|
@@ -63,7 +63,7 @@ dependencies:
|
|
63
63
|
- !ruby/object:Gem::Version
|
64
64
|
version: '1.3'
|
65
65
|
- !ruby/object:Gem::Dependency
|
66
|
-
name: sqlite3
|
66
|
+
name: sqlite3
|
67
67
|
requirement: !ruby/object:Gem::Requirement
|
68
68
|
none: false
|
69
69
|
requirements:
|
@@ -185,6 +185,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
185
185
|
- - ! '>='
|
186
186
|
- !ruby/object:Gem::Version
|
187
187
|
version: '0'
|
188
|
+
segments:
|
189
|
+
- 0
|
190
|
+
hash: -1968228787496291367
|
188
191
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
189
192
|
none: false
|
190
193
|
requirements:
|
@@ -193,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
193
196
|
version: '0'
|
194
197
|
requirements: []
|
195
198
|
rubyforge_project:
|
196
|
-
rubygems_version: 1.8.
|
199
|
+
rubygems_version: 1.8.25
|
197
200
|
signing_key:
|
198
201
|
specification_version: 3
|
199
202
|
summary: Polymorphic comments Rails gem - Rails 3+ only
|