unscoped_associations 0.6.2 → 0.6.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.
@@ -46,8 +46,14 @@ module UnscopedAssociations
46
46
 
47
47
  def add_unscoped_association(association_name)
48
48
  define_method(association_name) do
49
- self.class.reflect_on_association(association_name).klass.unscoped do
50
- super(association_name)
49
+ if self.class.reflect_on_association(association_name).polymorphic?
50
+ self.association(association_name).klass.unscoped do
51
+ super(association_name)
52
+ end
53
+ else
54
+ self.class.reflect_on_association(association_name).klass.unscoped do
55
+ super(association_name)
56
+ end
51
57
  end
52
58
  end
53
59
  end
@@ -1,3 +1,3 @@
1
1
  module UnscopedAssociations
2
- VERSION = "0.6.2"
2
+ VERSION = "0.6.3"
3
3
  end
@@ -14,6 +14,8 @@ class User < ActiveRecord::Base
14
14
  has_one :last_comment, class_name: 'Comment', order: 'created_at DESC'
15
15
  has_one :unscoped_last_comment, class_name: 'Comment', order: 'created_at DESC', unscoped: true
16
16
 
17
+ has_many :votes, as: :votable, unscoped: true
18
+
17
19
  default_scope { where(active: true) }
18
20
  end
19
21
 
@@ -21,6 +23,13 @@ class Comment < ActiveRecord::Base
21
23
  belongs_to :user
22
24
  belongs_to :scoped_user, class_name: 'User', foreign_key: 'user_id', unscoped: false
23
25
  belongs_to :unscoped_user, class_name: 'User', foreign_key: 'user_id', unscoped: true
26
+ has_many :votes, as: :votable
27
+
28
+ default_scope { where(public: true) }
29
+ end
30
+
31
+ class Vote < ActiveRecord::Base
32
+ belongs_to :votable, polymorphic: true, unscoped: true
24
33
 
25
34
  default_scope { where(public: true) }
26
35
  end
@@ -15,4 +15,10 @@ ActiveRecord::Schema.define do
15
15
  t.boolean :public
16
16
  t.timestamps
17
17
  end
18
- end
18
+
19
+ create_table :votes, force: true do |t|
20
+ t.references :votable, polymorphic: true
21
+ t.boolean :public
22
+ t.timestamps
23
+ end
24
+ end
@@ -3,6 +3,8 @@ require 'spec_helper'
3
3
  describe UnscopedAssociations do
4
4
  let(:user) { User.create active: false }
5
5
  let(:comment) { Comment.create user_id: user.id, public: false }
6
+ let(:user_vote) { user.votes.create public: false }
7
+ let(:comment_vote) { comment.votes.create }
6
8
 
7
9
  context 'a belongs to association' do
8
10
  subject { comment }
@@ -51,4 +53,20 @@ describe UnscopedAssociations do
51
53
  end
52
54
  end
53
55
  end
56
+
57
+ context 'has_many with unscoped polymorphic' do
58
+ subject { user }
59
+
60
+ context 'unscoped_votable' do
61
+ its(:votes) { should eq [user_vote] }
62
+ end
63
+ end
64
+
65
+ context 'belongs_to with unscoped polymorphic' do
66
+ subject { comment_vote }
67
+
68
+ context 'unscoped_votable' do
69
+ its(:votable) { should eq comment }
70
+ end
71
+ end
54
72
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unscoped_associations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.6.3
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: 2014-04-06 00:00:00.000000000 Z
12
+ date: 2014-04-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord