minimal_feedback 0.0.4 → 0.0.5
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 +2 -2
- data/lib/generators/minimal_feedback/minimal_feedback_generator.rb +2 -2
- data/lib/generators/minimal_feedback/templates/create_mf_feedbacks.rb +2 -3
- data/lib/minimal_feedback.rb +5 -13
- data/lib/minimal_feedback/feedback.rb +12 -10
- data/lib/minimal_feedback/negative_feedback.rb +7 -0
- data/lib/minimal_feedback/positive_feedback.rb +7 -0
- data/lib/minimal_feedback/version.rb +1 -1
- metadata +6 -4
data/README.md
CHANGED
@@ -14,7 +14,7 @@ Run:
|
|
14
14
|
|
15
15
|
```ruby
|
16
16
|
bundle install
|
17
|
-
rails generate
|
17
|
+
rails generate minimal_feedback
|
18
18
|
rake db:migrate
|
19
19
|
```
|
20
20
|
|
@@ -52,7 +52,7 @@ issue.feedbacks.last.type
|
|
52
52
|
=> :negative
|
53
53
|
```
|
54
54
|
|
55
|
-
|
55
|
+
If the condition proc returns false when the give_feedback method is called an ActiveRecord invalid exception is raised.
|
56
56
|
|
57
57
|
## Contributing
|
58
58
|
|
@@ -14,7 +14,7 @@ class MinimalFeedbackGenerator < Rails::Generators::Base
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def create_migration_files
|
17
|
-
create_migration_file_if_not_exist '
|
17
|
+
create_migration_file_if_not_exist 'create_mf_feedbacks'
|
18
18
|
end
|
19
19
|
|
20
20
|
private
|
@@ -24,4 +24,4 @@ class MinimalFeedbackGenerator < Rails::Generators::Base
|
|
24
24
|
migration_template "#{file_name}.rb", "db/migrate/#{file_name}.rb"
|
25
25
|
end
|
26
26
|
end
|
27
|
-
end
|
27
|
+
end
|
@@ -1,11 +1,10 @@
|
|
1
|
-
class
|
1
|
+
class CreateMfFeedbacks < ActiveRecord::Migration
|
2
2
|
def change
|
3
3
|
create_table :mf_feedbacks do |t|
|
4
4
|
t.string :type
|
5
|
-
t.integer :rating
|
6
5
|
t.references :user
|
7
6
|
t.references :rateable, :polymorphic => true
|
8
7
|
t.timestamps
|
9
8
|
end
|
10
9
|
end
|
11
|
-
end
|
10
|
+
end
|
data/lib/minimal_feedback.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'minimal_feedback/version'
|
2
|
-
require 'minimal_feedback/feedback'
|
3
2
|
require 'active_support'
|
3
|
+
require 'active_record'
|
4
|
+
require 'minimal_feedback/feedback'
|
5
|
+
require 'minimal_feedback/negative_feedback'
|
6
|
+
require 'minimal_feedback/positive_feedback'
|
4
7
|
|
5
8
|
module MinimalFeedback
|
6
9
|
extend ActiveSupport::Concern
|
@@ -8,8 +11,6 @@ module MinimalFeedback
|
|
8
11
|
included do
|
9
12
|
has_many :feedbacks, :as => :rateable, :class_name => 'MinimalFeedback::Feedback'
|
10
13
|
|
11
|
-
class InvalidFeedbackError < StandardError; end
|
12
|
-
|
13
14
|
cattr_accessor :feedback_condition
|
14
15
|
|
15
16
|
def self.allow_feedback(options)
|
@@ -20,20 +21,11 @@ module MinimalFeedback
|
|
20
21
|
options = args.extract_options!
|
21
22
|
type = args.first.to_sym
|
22
23
|
|
23
|
-
feedback = Feedback.
|
24
|
+
feedback = Feedback.build(:type => type) do |f|
|
24
25
|
f.rateable = self
|
25
26
|
f.user = options[:user]
|
26
27
|
end
|
27
28
|
|
28
|
-
case type
|
29
|
-
when :positive
|
30
|
-
feedback.rating = 1
|
31
|
-
when :negative
|
32
|
-
feedback.rating = -1
|
33
|
-
else
|
34
|
-
raise InvalidFeedbackError
|
35
|
-
end
|
36
|
-
|
37
29
|
feedback.save!
|
38
30
|
end
|
39
31
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'active_record'
|
2
|
-
|
3
1
|
module MinimalFeedback
|
4
2
|
class Feedback < ActiveRecord::Base
|
5
3
|
self.table_name = 'mf_feedbacks'
|
@@ -7,20 +5,24 @@ module MinimalFeedback
|
|
7
5
|
belongs_to :rateable, :polymorphic => true
|
8
6
|
belongs_to :user
|
9
7
|
|
10
|
-
validates :rating, :inclusion => { :in => [1, -1] }
|
11
|
-
|
12
8
|
validate do
|
13
9
|
if rateable.class.feedback_condition && !rateable.instance_eval(&rateable.class.feedback_condition)
|
14
10
|
errors.add(:base, 'feedback is not allowed')
|
15
11
|
end
|
16
12
|
end
|
17
13
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
14
|
+
class InvalidFeedbackError < StandardError; end
|
15
|
+
|
16
|
+
def self.build(options = {}, &block)
|
17
|
+
options.assert_valid_keys :type
|
18
|
+
|
19
|
+
case options[:type]
|
20
|
+
when :positive
|
21
|
+
PositiveFeedback.new(&block)
|
22
|
+
when :negative
|
23
|
+
NegativeFeedback.new(&block)
|
24
|
+
else
|
25
|
+
raise InvalidFeedbackError
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minimal_feedback
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
@@ -125,6 +125,8 @@ files:
|
|
125
125
|
- lib/generators/minimal_feedback/templates/create_mf_feedbacks.rb
|
126
126
|
- lib/minimal_feedback.rb
|
127
127
|
- lib/minimal_feedback/feedback.rb
|
128
|
+
- lib/minimal_feedback/negative_feedback.rb
|
129
|
+
- lib/minimal_feedback/positive_feedback.rb
|
128
130
|
- lib/minimal_feedback/version.rb
|
129
131
|
- minimal_feedback.gemspec
|
130
132
|
- spec/minimal_feedback_spec.rb
|
@@ -143,7 +145,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
143
145
|
version: '0'
|
144
146
|
segments:
|
145
147
|
- 0
|
146
|
-
hash:
|
148
|
+
hash: -4469648509491736839
|
147
149
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
150
|
none: false
|
149
151
|
requirements:
|
@@ -152,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
154
|
version: '0'
|
153
155
|
segments:
|
154
156
|
- 0
|
155
|
-
hash:
|
157
|
+
hash: -4469648509491736839
|
156
158
|
requirements: []
|
157
159
|
rubyforge_project:
|
158
160
|
rubygems_version: 1.8.24
|