commontator 1.1.3 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/commontator/comments_controller.rb +3 -2
- data/app/controllers/commontator/comments_controller.rb~ +136 -0
- data/app/models/commontator/comment.rb +53 -36
- data/app/models/commontator/comment.rb~ +108 -0
- data/app/models/commontator/subscription.rb +8 -6
- data/app/models/commontator/subscription.rb~ +21 -0
- data/app/models/commontator/thread.rb +48 -44
- data/app/models/commontator/thread.rb~ +48 -47
- data/app/views/commontator/comments/_body.html.erb +1 -1
- data/app/views/commontator/comments/_body.html.erb~ +8 -0
- data/app/views/commontator/comments/_form.html.erb +1 -1
- data/app/views/commontator/comments/_form.html.erb~ +38 -0
- data/app/views/commontator/comments/_show.html.erb +1 -1
- data/app/views/commontator/comments/_show.html.erb~ +44 -0
- data/app/views/commontator/comments/_votes.html.erb +1 -1
- data/app/views/commontator/comments/_votes.html.erb~ +57 -0
- data/app/views/commontator/comments/delete.js.erb +1 -1
- data/app/views/commontator/comments/delete.js.erb~ +17 -0
- data/config/initializers/commontator.rb +11 -4
- data/config/initializers/commontator.rb~ +171 -0
- data/db/migrate/0_install.rb +23 -21
- data/db/migrate/0_install.rb~ +23 -21
- data/lib/commontator.rb +2 -0
- data/lib/commontator.rb~ +1 -1
- data/lib/commontator/acts_as_commontable.rb +7 -6
- data/lib/commontator/acts_as_commontable.rb~ +8 -6
- data/lib/commontator/acts_as_commontator.rb +4 -3
- data/lib/commontator/acts_as_commontator.rb~ +31 -0
- data/lib/commontator/version.rb +1 -1
- data/lib/commontator/version.rb~ +1 -1
- data/spec/app/controllers/commontator/comments_controller_spec.rb +61 -20
- data/spec/app/controllers/commontator/comments_controller_spec.rb~ +58 -21
- data/spec/app/models/commontator/comment_spec.rb +8 -7
- data/spec/app/models/commontator/comment_spec.rb~ +9 -8
- data/spec/app/models/commontator/thread_spec.rb +1 -1
- data/spec/app/models/commontator/thread_spec.rb~ +1 -1
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +16 -16
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +724 -0
- data/spec/dummy/log/test.log +41005 -0
- metadata +12 -2
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
<% if comment.can_be_voted_on? %>
|
7
7
|
<% can_vote = comment.can_be_voted_on_by?(user) %>
|
8
|
-
<% vote = comment.
|
8
|
+
<% vote = comment.get_vote_by(user) %>
|
9
9
|
|
10
10
|
<span id="comment_<%= comment.id %>_upvote_span" class="comment_upvote">
|
11
11
|
<% if can_vote && (vote.blank? || !vote.vote_flag) %>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<% # Clients of this partial must provide the following variable:
|
2
|
+
# comment
|
3
|
+
# user
|
4
|
+
%>
|
5
|
+
|
6
|
+
<% if comment.can_be_voted_on? %>
|
7
|
+
<% can_vote = comment.can_be_voted_on_by?(user) %>
|
8
|
+
<% vote = comment.get_vote_from(user) %>
|
9
|
+
|
10
|
+
<span id="comment_<%= comment.id %>_upvote_span" class="comment_upvote">
|
11
|
+
<% if can_vote && (vote.blank? || !vote.vote_flag) %>
|
12
|
+
<%= form_tag commontator.upvote_comment_path(comment),
|
13
|
+
:method => :put,
|
14
|
+
:remote => true do %>
|
15
|
+
<%= image_submit_tag "commontator/upvote.png",
|
16
|
+
:onmouseover => "this.src='/assets/commontator/upvote_hover.png'",
|
17
|
+
:onmouseout => "this.src='/assets/commontator/upvote.png'" %>
|
18
|
+
<% end %>
|
19
|
+
<% elsif can_vote %>
|
20
|
+
<%= form_tag commontator.unvote_comment_path(comment),
|
21
|
+
:method => :put,
|
22
|
+
:remote => true do %>
|
23
|
+
<%= image_submit_tag "commontator/upvote_hover.png",
|
24
|
+
:onmouseover => "this.src='/assets/commontator/upvote.png'",
|
25
|
+
:onmouseout => "this.src='/assets/commontator/upvote_hover.png'" %>
|
26
|
+
<% end %>
|
27
|
+
<% else %>
|
28
|
+
<%= image_tag "commontator/upvote_hover.png" %>
|
29
|
+
<% end %>
|
30
|
+
</span>
|
31
|
+
|
32
|
+
<span id="comment_<%= comment.id %>_vote_count_span" class="comment_vote_count">
|
33
|
+
<p>+ <%= comment.upvotes.size %><br><br>- <%= comment.downvotes.size %></p>
|
34
|
+
</span>
|
35
|
+
|
36
|
+
<span id="comment_<%= comment.id %>_downvote_span" class="comment_downvote">
|
37
|
+
<% if can_vote && (vote.blank? || vote.vote_flag) %>
|
38
|
+
<%= form_tag commontator.downvote_comment_path(comment),
|
39
|
+
:method => :put,
|
40
|
+
:remote => true do %>
|
41
|
+
<%= image_submit_tag "commontator/downvote.png",
|
42
|
+
:onmouseover => "this.src='/assets/commontator/downvote_hover.png'",
|
43
|
+
:onmouseout => "this.src='/assets/commontator/downvote.png'" %>
|
44
|
+
<% end %>
|
45
|
+
<% elsif can_vote %>
|
46
|
+
<%= form_tag commontator.unvote_comment_path(comment),
|
47
|
+
:method => :put,
|
48
|
+
:remote => true do %>
|
49
|
+
<%= image_submit_tag "commontator/downvote_hover.png",
|
50
|
+
:onmouseover => "this.src='/assets/commontator/downvote.png'",
|
51
|
+
:onmouseout => "this.src='/assets/commontator/downvote_hover.png'" %>
|
52
|
+
<% end %>
|
53
|
+
<% else %>
|
54
|
+
<%= image_tag "commontator/downvote_hover.png" %>
|
55
|
+
<% end %>
|
56
|
+
</span>
|
57
|
+
<% end %>
|
@@ -2,7 +2,7 @@ $("#comment_<%= @comment.id.to_s %>_body_div").html("<%= escape_javascript(
|
|
2
2
|
render :partial => 'body', :locals => {:comment => @comment}) %>");
|
3
3
|
|
4
4
|
$("#comment_<%= @comment.id.to_s %>_timestamp_span").html("<%= escape_javascript(
|
5
|
-
|
5
|
+
@comment.timestamp + (@comment.is_modified? ? " by #{commontator_name(@comment.editor)}" : '')) %>");
|
6
6
|
|
7
7
|
$("#comment_<%= @comment.id.to_s %>_actions_span").html("<%= escape_javascript(
|
8
8
|
render :partial => 'actions',
|
@@ -0,0 +1,17 @@
|
|
1
|
+
$("#comment_<%= @comment.id.to_s %>_body_div").html("<%= escape_javascript(
|
2
|
+
render :partial => 'body', :locals => {:comment => @comment}) %>");
|
3
|
+
|
4
|
+
$("#comment_<%= @comment.id.to_s %>_timestamp_span").html("<%= escape_javascript(
|
5
|
+
@comment.timestamp + (@comment.is_modified? ? " by #{commontator_name(comment.editor)}" : '')) %>");
|
6
|
+
|
7
|
+
$("#comment_<%= @comment.id.to_s %>_actions_span").html("<%= escape_javascript(
|
8
|
+
render :partial => 'actions',
|
9
|
+
:locals => {:comment => @comment,
|
10
|
+
:user => @user}) %>");
|
11
|
+
|
12
|
+
$("#comment_<%= @comment.id %>_votes_span").html("<%= escape_javascript(
|
13
|
+
render :partial => 'votes',
|
14
|
+
:locals => {:comment => @comment,
|
15
|
+
:user => @user}) %>");
|
16
|
+
|
17
|
+
<%= javascript_proc %>
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# Change the settings below to suit your needs
|
2
2
|
# All settings are initially set to their default values
|
3
3
|
Commontator.configure do |config|
|
4
|
-
|
5
4
|
# Engine Configuration
|
6
5
|
|
7
6
|
# Name of the ApplicationController helper method that returns the current user
|
@@ -62,9 +61,17 @@ Commontator.configure do |config|
|
|
62
61
|
# Default: 'posted'
|
63
62
|
config.comment_create_verb_past = 'posted'
|
64
63
|
|
64
|
+
# Verb used when editing comments (present)
|
65
|
+
# Default: 'modify'
|
66
|
+
config.comment_edit_verb_present = 'modify'
|
67
|
+
|
68
|
+
# Verb used when editing comments (past)
|
69
|
+
# Default: 'modified'
|
70
|
+
config.comment_edit_verb_past = 'modified'
|
71
|
+
|
65
72
|
# What a commontable is called in your application
|
66
73
|
# If you have multiple commontable models,
|
67
|
-
# you
|
74
|
+
# you will want to pass this configuration value
|
68
75
|
# as an argument to acts_as_commontable in each one
|
69
76
|
# Default: 'commontable'
|
70
77
|
config.commontable_name = 'commontable'
|
@@ -114,11 +121,11 @@ Commontator.configure do |config|
|
|
114
121
|
# Default: false
|
115
122
|
config.comments_ordered_by_votes = false
|
116
123
|
|
117
|
-
# Whether users can read threads closed by
|
124
|
+
# Whether users can read threads closed by moderators
|
118
125
|
# Default: true
|
119
126
|
config.closed_threads_are_readable = true
|
120
127
|
|
121
|
-
# Whether comments deleted by
|
128
|
+
# Whether comments deleted by moderators can be seen
|
122
129
|
# (the content will still be hidden)
|
123
130
|
# Default: true
|
124
131
|
config.deleted_comments_are_visible = true
|
@@ -0,0 +1,171 @@
|
|
1
|
+
# Change the settings below to suit your needs
|
2
|
+
# All settings are initially set to their default values
|
3
|
+
Commontator.configure do |config|
|
4
|
+
# Engine Configuration
|
5
|
+
|
6
|
+
# Name of the ApplicationController helper method that returns the current user
|
7
|
+
# Default: 'current_user'
|
8
|
+
config.current_user_method = 'current_user'
|
9
|
+
|
10
|
+
# Proc that is called after any javascript runs (e.g. to display/clear flash messages)
|
11
|
+
# It is passed the view_context object (self from the view template), so you should be able to
|
12
|
+
# access anything you normally could in a view template (by using, e.g. view.flash)
|
13
|
+
# However, be aware that it does not have access to the main application's helpers
|
14
|
+
# Should return a string containing JS to be appended to all Commontator JS responses
|
15
|
+
# Default: lambda { |view| '$("#error_explanation").remove();' }
|
16
|
+
config.javascript_proc = lambda { |view| '$("#error_explanation").remove();' }
|
17
|
+
|
18
|
+
|
19
|
+
# User (acts_as_commontator) Configuration
|
20
|
+
|
21
|
+
# The name used if the user's name cannot be retrieved
|
22
|
+
# Default: 'Anonymous'
|
23
|
+
config.user_missing_name = 'Anonymous'
|
24
|
+
|
25
|
+
# Whether the comment creator's name is clickable in the comment view
|
26
|
+
# If enabled, the link will point to the comment creator's show page
|
27
|
+
# Default: false
|
28
|
+
config.user_name_clickable = false
|
29
|
+
|
30
|
+
# The method that returns the user's email address
|
31
|
+
# Default: 'email'
|
32
|
+
config.user_email_method = 'email'
|
33
|
+
|
34
|
+
# The method that returns the user's name
|
35
|
+
# Default: '' (use user_missing_name)
|
36
|
+
config.user_name_method = ''
|
37
|
+
|
38
|
+
# Proc called with user as argument that returns true if the user is an admin
|
39
|
+
# Admins can always delete other users' comments and close threads
|
40
|
+
# Note: user can be nil
|
41
|
+
# Default: lambda { |user| false } (no admins)
|
42
|
+
config.user_admin_proc = lambda { |user| false }
|
43
|
+
|
44
|
+
# Proc called with user as argument that returns true
|
45
|
+
# if the user should receive subscription emails
|
46
|
+
# Default: lambda { |user| true } (always receive subscription emails)
|
47
|
+
config.subscription_email_enable_proc = lambda { |user| true }
|
48
|
+
|
49
|
+
|
50
|
+
# Commontable (acts_as_commontable) Configuration
|
51
|
+
|
52
|
+
# What a comment is called in your application
|
53
|
+
# Default: 'comment'
|
54
|
+
config.comment_name = 'comment'
|
55
|
+
|
56
|
+
# Verb used when creating comments (present)
|
57
|
+
# Default: 'post'
|
58
|
+
config.comment_create_verb_present = 'post'
|
59
|
+
|
60
|
+
# Verb used when creating comments (past)
|
61
|
+
# Default: 'posted'
|
62
|
+
config.comment_create_verb_past = 'posted'
|
63
|
+
|
64
|
+
# Verb used when editing comments (present)
|
65
|
+
# Default: 'edit'
|
66
|
+
config.comment_edit_verb_present = 'modify'
|
67
|
+
|
68
|
+
# Verb used when editing comments (past)
|
69
|
+
# Default: 'modified'
|
70
|
+
config.comment_edit_verb_past = 'modified'
|
71
|
+
|
72
|
+
# What a commontable is called in your application
|
73
|
+
# If you have multiple commontable models,
|
74
|
+
# you will want to pass this configuration value
|
75
|
+
# as an argument to acts_as_commontable in each one
|
76
|
+
# Default: 'commontable'
|
77
|
+
config.commontable_name = 'commontable'
|
78
|
+
|
79
|
+
# The format of the timestamps used by Commontator
|
80
|
+
# Default: '%b %d %Y, %I:%M %p'
|
81
|
+
config.timestamp_format = '%b %d %Y, %I:%M %p'
|
82
|
+
|
83
|
+
# Whether admins can edit other users' comments
|
84
|
+
# Default: false
|
85
|
+
config.admin_can_edit_comments = false
|
86
|
+
|
87
|
+
# Whether users automatically subscribe to a thread when commenting
|
88
|
+
# Default: false
|
89
|
+
config.auto_subscribe_on_comment = false
|
90
|
+
|
91
|
+
# Whether users can edit their own comments
|
92
|
+
# Default: true
|
93
|
+
config.can_edit_own_comments = true
|
94
|
+
|
95
|
+
# Whether users can edit their own comments
|
96
|
+
# after someone posted a newer comment
|
97
|
+
# Default: false
|
98
|
+
config.can_edit_old_comments = false
|
99
|
+
|
100
|
+
# Whether users can delete their own comments
|
101
|
+
# Default: true
|
102
|
+
config.can_delete_own_comments = true
|
103
|
+
|
104
|
+
# Whether users can delete their own comments
|
105
|
+
# after someone posted a newer comment
|
106
|
+
# Default: false
|
107
|
+
config.can_delete_old_comments = false
|
108
|
+
|
109
|
+
# Whether users can manually subscribe or unsubscribe to threads
|
110
|
+
# Default: true
|
111
|
+
config.can_subscribe_to_thread = true
|
112
|
+
|
113
|
+
# Whether users can vote on other users' comments
|
114
|
+
# Note: requires acts_as_votable gem installed
|
115
|
+
# and configured for your application
|
116
|
+
# Default: false
|
117
|
+
config.can_vote_on_comments = false
|
118
|
+
|
119
|
+
# Whether comments should be ordered by vote score
|
120
|
+
# instead of by order posted
|
121
|
+
# Default: false
|
122
|
+
config.comments_ordered_by_votes = false
|
123
|
+
|
124
|
+
# Whether users can read threads closed by moderators
|
125
|
+
# Default: true
|
126
|
+
config.closed_threads_are_readable = true
|
127
|
+
|
128
|
+
# Whether comments deleted by moderators can be seen
|
129
|
+
# (the content will still be hidden)
|
130
|
+
# Default: true
|
131
|
+
config.deleted_comments_are_visible = true
|
132
|
+
|
133
|
+
# The method which returns the commontable's id, sent to users in email messages
|
134
|
+
# Default: 'id'
|
135
|
+
config.commontable_id_method = 'id'
|
136
|
+
|
137
|
+
# Proc called with thread and user as arguments
|
138
|
+
# If it returns true, that user is a moderator for that particular thread
|
139
|
+
# and is given admin-like capabilities for that thread only
|
140
|
+
# Note: user can be nil
|
141
|
+
# Default: lambda { |thread, user| false } (no thread-specific moderators)
|
142
|
+
config.can_edit_thread_proc = lambda { |thread, user| false }
|
143
|
+
|
144
|
+
# Proc called with thread and user as arguments
|
145
|
+
# If it returns true, that user is allowed to read that thread
|
146
|
+
# Note: user can be nil
|
147
|
+
# Default: lambda { |thread, user| true } (no read restrictions)
|
148
|
+
config.can_read_thread_proc = lambda { |thread, user| true }
|
149
|
+
|
150
|
+
# Proc that returns the commontable url that contains the thread
|
151
|
+
# (defaults to the commontable show url)
|
152
|
+
# Main application's routes can be accessed using main_app object
|
153
|
+
# Default: lambda { |main_app, commontable| main_app.polymorphic_url(commontable) }
|
154
|
+
config.commontable_url_proc = lambda { |main_app, commontable| main_app.polymorphic_url(commontable) }
|
155
|
+
|
156
|
+
# Proc that returns the subscription email 'from' address
|
157
|
+
# Default:
|
158
|
+
# lambda { |params| 'no-reply@example.com' }
|
159
|
+
config.subscription_email_from_proc = lambda { |params| 'no-reply@example.com' }
|
160
|
+
|
161
|
+
# Proc that returns the subscription email 'subject' string
|
162
|
+
# Default:
|
163
|
+
# lambda do |params|
|
164
|
+
# "#{params[:creator_name]} #{params[:config].comment_create_verb_past} a " + \
|
165
|
+
# "#{params[:config].comment_name} on #{params[:commontable_name]} #{params[:commontable_id]}"
|
166
|
+
# end
|
167
|
+
config.subscription_email_subject_proc = lambda do |params|
|
168
|
+
"#{params[:creator_name]} #{params[:config].comment_create_verb_past} a " + \
|
169
|
+
"#{params[:config].comment_name} on #{params[:commontable_name]} #{params[:commontable_id]}"
|
170
|
+
end
|
171
|
+
end
|
data/db/migrate/0_install.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
class Install < ActiveRecord::Migration
|
2
2
|
def change
|
3
3
|
create_table "commontator_comments" do |t|
|
4
|
-
t.text "body"
|
5
|
-
t.integer "creator_id"
|
6
4
|
t.string "creator_type"
|
5
|
+
t.integer "creator_id"
|
6
|
+
t.string "editor_type"
|
7
|
+
t.integer "editor_id"
|
8
|
+
t.integer "thread_id", :null => false
|
9
|
+
t.text "body", :null => false, :default => ''
|
7
10
|
t.datetime "deleted_at"
|
8
|
-
t.integer "deleter_id"
|
9
|
-
t.string "deleter_type"
|
10
|
-
t.integer "thread_id"
|
11
11
|
|
12
12
|
t.integer "cached_votes_total", :default => 0
|
13
13
|
t.integer "cached_votes_up", :default => 0
|
@@ -15,34 +15,36 @@ class Install < ActiveRecord::Migration
|
|
15
15
|
|
16
16
|
t.timestamps
|
17
17
|
end
|
18
|
+
|
19
|
+
add_index :commontator_comments, [:creator_type, :creator_id, :thread_id], :name => "index_c_c_on_c_type_and_c_id_and_t_id"
|
20
|
+
add_index :commontator_comments, :thread_id
|
21
|
+
|
22
|
+
add_index :commontator_comments, :cached_votes_total
|
23
|
+
add_index :commontator_comments, :cached_votes_up
|
24
|
+
add_index :commontator_comments, :cached_votes_down
|
18
25
|
|
19
26
|
create_table "commontator_subscriptions" do |t|
|
20
|
-
t.
|
21
|
-
t.
|
22
|
-
t.integer "thread_id"
|
23
|
-
t.integer "unread", :default => 0
|
27
|
+
t.string "subscriber_type", :null => false
|
28
|
+
t.integer "subscriber_id", :null => false
|
29
|
+
t.integer "thread_id", :null => false
|
30
|
+
t.integer "unread", :null => false, :default => 0
|
24
31
|
|
25
32
|
t.timestamps
|
26
33
|
end
|
27
34
|
|
35
|
+
add_index :commontator_subscriptions, [:subscriber_type, :subscriber_id, :thread_id], :unique => true, :name => "index_c_s_on_s_type_and_s_id_and_t_id"
|
36
|
+
add_index :commontator_subscriptions, :thread_id
|
37
|
+
|
28
38
|
create_table "commontator_threads" do |t|
|
29
|
-
t.integer "commontable_id"
|
30
39
|
t.string "commontable_type"
|
40
|
+
t.integer "commontable_id"
|
31
41
|
t.datetime "closed_at"
|
32
|
-
t.integer "closer_id"
|
33
42
|
t.string "closer_type"
|
43
|
+
t.integer "closer_id"
|
34
44
|
|
35
45
|
t.timestamps
|
36
46
|
end
|
37
|
-
|
38
|
-
add_index :
|
39
|
-
add_index :commontator_comments, :thread_id
|
40
|
-
add_index :commontator_subscriptions, [:subscriber_id, :subscriber_type, :thread_id], :unique => true, :name => "index_c_s_on_s_id_and_s_type_and_t_id"
|
41
|
-
add_index :commontator_subscriptions, :thread_id
|
42
|
-
add_index :commontator_threads, [:commontable_id, :commontable_type]
|
43
|
-
|
44
|
-
add_index :commontator_comments, :cached_votes_total
|
45
|
-
add_index :commontator_comments, :cached_votes_up
|
46
|
-
add_index :commontator_comments, :cached_votes_down
|
47
|
+
|
48
|
+
add_index :commontator_threads, [:commontable_type, :commontable_id], :unique => true
|
47
49
|
end
|
48
50
|
end
|
data/db/migrate/0_install.rb~
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
class
|
1
|
+
class Install < ActiveRecord::Migration
|
2
2
|
def change
|
3
3
|
create_table "commontator_comments" do |t|
|
4
|
-
t.text "body"
|
5
|
-
t.integer "creator_id"
|
6
4
|
t.string "creator_type"
|
5
|
+
t.integer "creator_id"
|
6
|
+
t.string "editor_type"
|
7
|
+
t.integer "editor_id"
|
8
|
+
t.integer "thread_id", :null => false
|
9
|
+
t.text "body", :null => false, :default => ''
|
7
10
|
t.datetime "deleted_at"
|
8
|
-
t.integer "deleter_id"
|
9
|
-
t.string "deleter_type"
|
10
|
-
t.integer "thread_id"
|
11
11
|
|
12
12
|
t.integer "cached_votes_total", :default => 0
|
13
13
|
t.integer "cached_votes_up", :default => 0
|
@@ -15,34 +15,36 @@ class InstallCommontator < ActiveRecord::Migration
|
|
15
15
|
|
16
16
|
t.timestamps
|
17
17
|
end
|
18
|
+
|
19
|
+
add_index :commontator_comments, [:creator_type, :creator_id, :thread_id], :name => "index_c_c_on_c_type_and_c_id_and_t_id"
|
20
|
+
add_index :commontator_comments, :thread_id
|
21
|
+
|
22
|
+
add_index :commontator_comments, :cached_votes_total
|
23
|
+
add_index :commontator_comments, :cached_votes_up
|
24
|
+
add_index :commontator_comments, :cached_votes_down
|
18
25
|
|
19
26
|
create_table "commontator_subscriptions" do |t|
|
20
|
-
t.
|
21
|
-
t.
|
22
|
-
t.integer "thread_id"
|
27
|
+
t.string "subscriber_type", :null => false
|
28
|
+
t.integer "subscriber_id", :null => false
|
29
|
+
t.integer "thread_id", :null => false
|
23
30
|
t.integer "unread", :default => 0
|
24
31
|
|
25
32
|
t.timestamps
|
26
33
|
end
|
27
34
|
|
35
|
+
add_index :commontator_subscriptions, [:subscriber_type, :subscriber_id, :thread_id], :unique => true, :name => "index_c_s_on_s_type_and_s_id_and_t_id"
|
36
|
+
add_index :commontator_subscriptions, :thread_id
|
37
|
+
|
28
38
|
create_table "commontator_threads" do |t|
|
29
|
-
t.integer "commontable_id"
|
30
39
|
t.string "commontable_type"
|
40
|
+
t.integer "commontable_id"
|
31
41
|
t.datetime "closed_at"
|
32
|
-
t.integer "closer_id"
|
33
42
|
t.string "closer_type"
|
43
|
+
t.integer "closer_id"
|
34
44
|
|
35
45
|
t.timestamps
|
36
46
|
end
|
37
|
-
|
38
|
-
add_index :
|
39
|
-
add_index :commontator_comments, :thread_id
|
40
|
-
add_index :commontator_subscriptions, [:subscriber_id, :subscriber_type, :thread_id], :unique => true, :name => "index_c_s_on_s_id_and_s_type_and_t_id"
|
41
|
-
add_index :commontator_subscriptions, :thread_id
|
42
|
-
add_index :commontator_threads, [:commontable_id, :commontable_type]
|
43
|
-
|
44
|
-
add_index :commontator_comments, :cached_votes_total
|
45
|
-
add_index :commontator_comments, :cached_votes_up
|
46
|
-
add_index :commontator_comments, :cached_votes_down
|
47
|
+
|
48
|
+
add_index :commontator_threads, [:commontable_type, :commontable_id], :unique => true
|
47
49
|
end
|
48
50
|
end
|