ratable 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8de164f5d06b448bfc98577762846acbdc799041
4
- data.tar.gz: 29a25e193edd57825709c465a800a3025b728715
3
+ metadata.gz: 0b37b427f57776006d941b8f962e0ac53c332972
4
+ data.tar.gz: 4784df61824db2de0351693663283bd173713e82
5
5
  SHA512:
6
- metadata.gz: 6440686c6effdb6c0ceaec022320afb638b1052dcadbc145b5ce56d65674280d83d85e160251c380f3e99cdef81c9120a1f46565b9f587ad84bb9485904fdcef
7
- data.tar.gz: a9cfcf73aabf987b78b4ac456bb6f895e72a66e61e09e18e3e600f1fa4396c87747f351491c7607345f5cbfcb71b31489251080fadabbd9424e18f23ca37252a
6
+ metadata.gz: 0bc3c2714db3e79fba8b448776172340c0717b17fc7bcf59ea5942fab553456f4f5458cc4b16c16eaad6d9cef22de8de09b38c93f3651b6a72ea46dcf5c2fa37
7
+ data.tar.gz: bc620147f939dbc11733389ea429f6b5f3c9c0276fce72d54a64d991ca3caaf0780caf12ab800df9610092d37eb82dd17a812d037151ab6b6a4cb1d9a1668f2f
@@ -5,5 +5,6 @@ module Ratable
5
5
  autoload :Ratable, 'ratable/models/ratable'
6
6
  autoload :Ratee, 'ratable/models/ratee'
7
7
  autoload :Rater, 'ratable/models/rater'
8
+ autoload :RateeRater, 'ratable/models/ratee_rater'
8
9
  end
9
10
  end
@@ -3,7 +3,7 @@ require 'rails'
3
3
  module Ratable
4
4
  class Engine < ::Rails::Engine
5
5
  isolate_namespace Ratable
6
- initializer "ratable.models.ratee" do
6
+ initializer "ratable.models.ratable" do
7
7
  ActiveSupport.on_load(:active_record) do
8
8
  extend Ratable::Models::Ratable::ActiveRecordExtension
9
9
  include Ratable::Models::Ratable::ActiveRecordInclusion
@@ -19,6 +19,11 @@ module Ratable
19
19
  extend Ratable::Models::Rater::ActiveRecordExtension
20
20
  end
21
21
  end
22
+ initializer "ratable.models.ratee_rater" do
23
+ ActiveSupport.on_load(:active_record) do
24
+ extend Ratable::Models::RateeRater::ActiveRecordExtension
25
+ end
26
+ end
22
27
  config.generators do |g|
23
28
  g.test_framework :rspec, :fixture => false
24
29
  g.fixture_replacement :factory_girl, :dir => 'spec/factories'
@@ -2,41 +2,66 @@ module Ratable
2
2
  module Models
3
3
  module Ratee
4
4
  extend ActiveSupport::Concern
5
+ extend Ratable::ActiveRecordExtension
5
6
 
6
7
  attr_reader :has_one
7
8
 
8
9
  module ActiveRecordExtension
9
10
  def acts_as_ratee(options={has_one: false})
11
+ throw "To make a model the rater and the ratee use `acts_as_ratee_and_rater`" if acts_like_rater?
10
12
  @has_one = options[:has_one]
11
13
  include Ratee
12
14
  end
13
15
  end
14
16
 
15
17
  included do
16
- if @has_one
17
- has_one :rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
18
+ unless acts_like_rater?
19
+ if @has_one
20
+ has_one :rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
21
+ else
22
+ has_many :ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
23
+ end
18
24
  else
19
- has_many :ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
25
+ if @has_one
26
+ has_one :ratee_rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
27
+ else
28
+ has_many :ratee_ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
29
+ end
20
30
  end
21
- has_one :rating_summary, class_name: 'Ratable::RatingSummary', as: :ratee
22
31
  end
23
32
 
24
33
  def raters
25
- if @has_one
26
- rating.rater
34
+ unless acts_like_rater?
35
+ if @has_one
36
+ rating.rater
37
+ else
38
+ ratings.includes(:rater).collect { |rating| rating.rater }
39
+ end
27
40
  else
28
- ratings.includes(:rater).collect { |rating| rating.rater }
41
+ if @has_one
42
+ ratee_rating.rater
43
+ else
44
+ ratee_ratings.includes(:rater).collect { |rating| rating.rater }
45
+ end
29
46
  end
30
47
  end
31
48
 
32
- def rate(options={})
33
- options.reject! { |k| k == :ratee }
34
- if @has_one
35
- self.rating.create(options)
36
- else
37
- self.ratings.create(options)
38
- end
39
- end
49
+ # def rate(options={})
50
+ # options.reject! { |k| k == :ratee }
51
+ # unless acts_like_rater?
52
+ # if @has_one
53
+ # self.rating.create(options)
54
+ # else
55
+ # self.ratings.create(options)
56
+ # end
57
+ # else
58
+ # if @has_one
59
+ # self.ratee_rating.create(options)
60
+ # else
61
+ # self.ratee_ratings.create(options)
62
+ # end
63
+ # end
64
+ # end
40
65
 
41
66
  end
42
67
  end
@@ -0,0 +1,71 @@
1
+ module Ratable
2
+ module Models
3
+ module RateeRater
4
+ extend ActiveSupport::Concern
5
+ extend Ratable::ActiveRecordExtension
6
+
7
+ attr_reader :has_one_ratee, :has_one_rater
8
+
9
+ module ActiveRecordExtension
10
+ def acts_as_ratee_and_rater(options={has_one_ratee: false, has_one_rater: false})
11
+ @has_one_ratee = options[:has_one_ratee]
12
+ @has_one_rater = options[:has_one_rater]
13
+ include RateeRater
14
+ end
15
+
16
+ def acts_as_rater_and_ratee(options={has_one_ratee: false, has_one_rater: false})
17
+ @has_one_ratee = options[:has_one_ratee]
18
+ @has_one_rater = options[:has_one_rater]
19
+ include RateeRater
20
+ end
21
+ end
22
+
23
+ included do
24
+ if @has_one_ratee
25
+ has_one :ratee_rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
26
+ else
27
+ has_many :ratee_ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
28
+ end
29
+ if @has_one_rater
30
+ has_one :rater_rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
31
+ else
32
+ has_many :rater_ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
33
+ end
34
+ end
35
+
36
+ def ratees
37
+ if @has_one_ratee
38
+ rater_rating.ratee
39
+ else
40
+ rater_rating.includes(:ratee).collect { |rating| rating.ratee }
41
+ end
42
+ end
43
+
44
+ def raters
45
+ if @has_one_rater
46
+ ratee_rating.rater
47
+ else
48
+ ratee_ratings.includes(:rater).collect { |rating| rating.rater }
49
+ end
50
+ end
51
+
52
+ def ratee_rate(options={})
53
+ options.reject! { |k| k == :ratee }
54
+ if @has_one_ratee
55
+ self.ratee_rating.create(options)
56
+ else
57
+ self.ratee_rating.creaste(options)
58
+ end
59
+ end
60
+
61
+ def rater_rate(options)
62
+ options.reject! { |k| k == :rater }
63
+ if @has_one_rater
64
+ self.rater_rating.create(options)
65
+ else
66
+ self.rater_ratings.create(options)
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -7,6 +7,7 @@ module Ratable
7
7
 
8
8
  module ActiveRecordExtension
9
9
  def acts_as_rater(options={has_one: false})
10
+ throw "To make a model the rater and the ratee use `acts_as_ratee_and_rater`" if acts_like_ratee?
10
11
  @has_one = options[:has_one]
11
12
  include Rater
12
13
  end
@@ -18,7 +19,6 @@ module Ratable
18
19
  else
19
20
  has_many :ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
20
21
  end
21
- has_one :rating_summary, class_name: 'Ratable::RatingSummary', as: :rater
22
22
  end
23
23
 
24
24
  def ratees
@@ -1,3 +1,3 @@
1
1
  module Ratable
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -4,5 +4,5 @@ class User < ActiveRecord::Base
4
4
  devise :database_authenticatable, :registerable,
5
5
  :recoverable, :rememberable, :trackable, :validatable
6
6
 
7
- acts_as_rater
7
+ acts_as_ratee_and_rater
8
8
  end
@@ -4260,3 +4260,18 @@ Started GET "/assets/star-off-6aaeebdaab93d594c005d366ce0d94fba02e7a07fd03557dbe
4260
4260
   (44.0ms) INSERT INTO `schema_migrations` (version) VALUES ('20160418213647')
4261
4261
   (43.9ms) INSERT INTO `schema_migrations` (version) VALUES ('20160418191311')
4262
4262
   (43.7ms) INSERT INTO `schema_migrations` (version) VALUES ('20160418175804')
4263
+ User Load (0.6ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
4264
+ Ratable::Rating Load (0.7ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`rater_id` = 1 AND `ratable_ratings`.`rater_type` = 'User'
4265
+ Ratable::Rating Load (1.1ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'User'
4266
+ User Load (0.7ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
4267
+ Ratable::Rating Load (1.7ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'User'
4268
+ User Load (0.6ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
4269
+ User Load (0.4ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
4270
+ Ratable::Rating Load (0.6ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'User'
4271
+ Ratable::Rating Load (0.9ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`rater_id` = 1 AND `ratable_ratings`.`rater_type` = 'User'
4272
+ Post Load (0.7ms) SELECT `posts`.* FROM `posts` ORDER BY `posts`.`id` ASC LIMIT 1
4273
+ Ratable::Rating Load (0.9ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
4274
+ Admin Load (0.6ms) SELECT `admins`.* FROM `admins` WHERE `admins`.`id` IN (1)
4275
+ User Load (0.8ms) SELECT `users`.* FROM `users` WHERE `users`.`id` IN (1)
4276
+ Ratable::Rating Load (0.8ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
4277
+ Ratable::Rating Load (0.8ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post' AND `ratable_ratings`.`rater_type` = 'User' AND `ratable_ratings`.`rater_id` = 1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ratable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - François Bélanger
@@ -25,13 +25,13 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: mysql2
28
+ name: jquery-rails
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
- type: :development
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: devise
42
+ name: mysql2
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: jquery-rails
56
+ name: devise
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -131,6 +131,7 @@ files:
131
131
  - lib/ratable/engine.rb
132
132
  - lib/ratable/models/ratable.rb
133
133
  - lib/ratable/models/ratee.rb
134
+ - lib/ratable/models/ratee_rater.rb
134
135
  - lib/ratable/models/rater.rb
135
136
  - lib/ratable/version.rb
136
137
  - lib/tasks/ratable_tasks.rake