parrot 0.0.2 → 0.0.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/README.md
CHANGED
@@ -7,21 +7,33 @@
|
|
7
7
|
3. Run <tt>rake db:migrate</tt>
|
8
8
|
4. Run <tt>rails g parrot MODEL_NAME</tt>
|
9
9
|
5. Add subresources to routes
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
6. Add commenting relation to your commenters:
|
16
|
-
|
17
|
-
has_many :comments, :class_name => Parrot::Comment, :foreign_key => :author_id
|
10
|
+
<pre>
|
11
|
+
resources RESOURCE_NAME do
|
12
|
+
resources :parrot_comments, controller: 'parrot/comments', path: 'comments'
|
13
|
+
end
|
14
|
+
</pre>
|
18
15
|
|
19
16
|
# Notes
|
20
17
|
|
21
|
-
|
22
|
-
|
18
|
+
Given <tt>@comment = Parrot::Comment.find(id)</tt>:
|
19
|
+
|
20
|
+
* <tt>rails g parrot MODEL_NAME</tt> (4th step of the installation) adds a
|
21
|
+
<tt>parrot_comments</tt> class method in the model. It sets a polymorphic
|
22
|
+
relation with <tt>Parrot::Comment</tt>, whose name is <tt>commentable</tt>.
|
23
|
+
You can call <tt>@post.comments</tt> to get related comments, or
|
24
|
+
<tt>@comment.commentable</tt> to get the related entry of a given comment.
|
25
|
+
* The default "author" model is <tt>User</tt>. You may change it from
|
26
|
+
<tt>config/initializers/parrot.rb</tt>. You can call
|
27
|
+
<tt>@comment.author</tt> to get comment's author.
|
28
|
+
* Parrot views calls <tt>to_s</tt> method on the comment's <tt>author</tt>.
|
29
|
+
You may want to alias it, or the "ugly" Ruby object will be shown:
|
30
|
+
<tt>alias_method :to_s, :name</tt>
|
31
|
+
* You may define <tt>after_comment_path</tt> method on commentable model for
|
32
|
+
defining where the user should be redirected after commenting (related
|
33
|
+
resource by default).
|
23
34
|
|
24
35
|
# To-do
|
25
36
|
|
26
37
|
* Flash responders working?
|
27
|
-
*
|
38
|
+
* Wiki: how to reopen parrot's subclasses from parent applications?
|
39
|
+
(<tt>to_prepare</tt>).
|
@@ -19,18 +19,18 @@ module Parrot
|
|
19
19
|
@comment.author_id = current_user.id
|
20
20
|
@comment.save
|
21
21
|
@commentable_type = commentable_type
|
22
|
-
respond_with @comment, :location => commentable
|
22
|
+
respond_with @comment, :location => after_comment_path(commentable, @comment)
|
23
23
|
end
|
24
24
|
|
25
25
|
def destroy
|
26
26
|
@comment = current_user.comments.find params[:id]
|
27
27
|
@comment.destroy
|
28
|
-
respond_with @comment, :location => commentable
|
28
|
+
respond_with @comment, :location => after_comment_path(commentable, @comment)
|
29
29
|
end
|
30
30
|
|
31
31
|
# Following methods should belong to ApplicationController
|
32
32
|
def commentable_fk
|
33
|
-
commentable_fk = params.select{|k,v| k =~ /_id/ }.keys.
|
33
|
+
commentable_fk = params.select{|k,v| k =~ /_id/ }.keys.last
|
34
34
|
end
|
35
35
|
|
36
36
|
def commentable_type
|
@@ -39,10 +39,10 @@ module Parrot
|
|
39
39
|
|
40
40
|
def commentable_id
|
41
41
|
id = params[commentable_fk]
|
42
|
-
if id.to_i.to_s == id # Numeric id
|
42
|
+
if id.to_i.to_s == id # Numeric id?
|
43
43
|
id.to_i
|
44
44
|
else
|
45
|
-
commentable(id).id # Slugged (text, but we
|
45
|
+
commentable(id).id # Slugged (coming as text, but we need numeric id)
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -50,6 +50,10 @@ module Parrot
|
|
50
50
|
commentable_type.classify.constantize.find(id || commentable_id)
|
51
51
|
end
|
52
52
|
|
53
|
+
def after_comment_path(commentable, comment)
|
54
|
+
commentable.respond_to?(:after_comment_path) ? commentable.after_comment_path(comment) : commentable
|
55
|
+
end
|
56
|
+
|
53
57
|
def debug(object)
|
54
58
|
logger.warn "DEBUGGING: #{object.inspect}"
|
55
59
|
end
|
data/lib/parrot/version.rb
CHANGED
@@ -2,6 +2,9 @@ class CreateParrotComments < ActiveRecord::Migration
|
|
2
2
|
def change
|
3
3
|
create_table :parrot_comments do |t|
|
4
4
|
t.integer :author_id
|
5
|
+
t.string :author_name
|
6
|
+
t.string :author_email
|
7
|
+
t.string :author_phone
|
5
8
|
t.string :commentable_type
|
6
9
|
t.integer :commentable_id
|
7
10
|
t.text :body
|
data/test/dummy/db/schema.rb
CHANGED
@@ -15,6 +15,9 @@ ActiveRecord::Schema.define(:version => 20120429124205) do
|
|
15
15
|
|
16
16
|
create_table "parrot_comments", :force => true do |t|
|
17
17
|
t.integer "author_id"
|
18
|
+
t.string "author_name"
|
19
|
+
t.string "author_email"
|
20
|
+
t.string "author_phone"
|
18
21
|
t.string "commentable_type"
|
19
22
|
t.integer "commentable_id"
|
20
23
|
t.text "body"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parrot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70272666574300 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70272666574300
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sqlite3
|
27
|
-
requirement: &
|
27
|
+
requirement: &70272666573820 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70272666573820
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: devise
|
38
|
-
requirement: &
|
38
|
+
requirement: &70272666573380 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70272666573380
|
47
47
|
description: Add simple comments to any Rails resource.
|
48
48
|
email: tutecosta@gmail.com
|
49
49
|
executables: []
|