emotions 0.1.1 → 0.1.2

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
@@ -69,3 +69,17 @@ user.express!(:sad, picture)
69
69
  user.sad_about?(picure)
70
70
  # => true
71
71
  ```
72
+
73
+ Most of the times, you would want to get a quick look at about how many users expressed a certain emotion towards a certain picture. That could be an expensive operation.
74
+
75
+ However, if the *emotive* record has an `<emotion>_emotions_count` column, Emotions will populate its value with how many users expressed that emotion towards it.
76
+
77
+ ```ruby
78
+ user.happy_about!(picture)
79
+
80
+ picture.happy_about.count
81
+ # SQL query that counts records and returns `1`
82
+
83
+ picture.happy_emotions_count
84
+ # Quick lookup into the column and returns `1`
85
+ ```
@@ -12,5 +12,15 @@ module Emotions
12
12
  # Associations
13
13
  belongs_to :emotional, polymorphic: true
14
14
  belongs_to :emotive, polymorphic: true
15
+
16
+ # Callbacks
17
+ after_create :update_emotion_counter
18
+ after_destroy :update_emotion_counter
19
+
20
+ protected
21
+
22
+ def update_emotion_counter
23
+ self.emotive.update_emotion_counter(self.emotion)
24
+ end
15
25
  end
16
26
  end
@@ -14,6 +14,14 @@ module Emotions
14
14
  self.emotions.includes(:emotional)
15
15
  end
16
16
 
17
+ def update_emotion_counter(emotion)
18
+ attribute = :"#{emotion}_emotions_count"
19
+
20
+ if self.respond_to?(attribute)
21
+ self.update_attribute(attribute, self.send("#{emotion}_about").count)
22
+ end
23
+ end
24
+
17
25
  module ClassMethods
18
26
  def define_emotion_methods(emotion)
19
27
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
@@ -1,3 +1,3 @@
1
1
  module Emotions
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: emotions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -97,7 +97,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
97
97
  version: '0'
98
98
  segments:
99
99
  - 0
100
- hash: -4058484285824368663
100
+ hash: -3833006688586079833
101
101
  required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  none: false
103
103
  requirements:
@@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  version: '0'
107
107
  segments:
108
108
  - 0
109
- hash: -4058484285824368663
109
+ hash: -3833006688586079833
110
110
  requirements: []
111
111
  rubyforge_project:
112
112
  rubygems_version: 1.8.23