passive_record 0.4.12 → 0.4.13

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: ca6a576aa3a31b7353bc0c5eb63341f499e8ae44
4
- data.tar.gz: b341ffd2c74c73110f91c6de4f409cfe8705ffb1
3
+ metadata.gz: d211fdab7ab67cfa36f0eb20919b98f334b1f52a
4
+ data.tar.gz: 3b222ff303400e4b17b8bb776fd621c0d4b06ffa
5
5
  SHA512:
6
- metadata.gz: 11bb9c9f548185b19bf87c62264266d4529161f5b198f0b62e1bf85fd3dd8b1c63036a97b2d0ff818a6538a2f07e97303fe04d227012fff56ecb2cc0c64afe90
7
- data.tar.gz: 99105eb8a1b8fbd8d50b166deaa98f7a671ab730736684d89a3c3e386a4fba242360f45fa1792d3be857adfa60d56c8ba9ac6838fb36620529f2877217a91a4d
6
+ metadata.gz: 127ac6578c9583d0a9d24819818c92a9b01fab3b7c9a00507d3c422bede8055135c62aff00c81155281f5276aca747d787a8819646f0a3d8206a2dbb006ef974
7
+ data.tar.gz: a6ceaf8115ed8e8dd11c1cc1333eef38f5f66cb0a9f1d3a86988758b60f9b6de6dde2b819ed925f97316b57bef15c41fd3b1638af5316af7188b318c04c35380
@@ -31,6 +31,7 @@ module PassiveRecord
31
31
  )
32
32
  end
33
33
  else
34
+ # binding.pry
34
35
  intermediary_model = intermediary_relation.
35
36
  where(
36
37
  association.target_name_symbol.to_s.singularize + "_id" => child.id).
@@ -95,7 +96,7 @@ module PassiveRecord
95
96
  if intermediary_relation.is_a?(HasManyThroughRelation)
96
97
  conds = intermediary_relation.intermediary_conditions
97
98
 
98
- if nested_association.habtm
99
+ if nested_association.habtm || nested_association.is_a?(HasManyThroughAssociation)
99
100
  { association.through_class => conds }
100
101
  else
101
102
  { association.through_class.to_s.singularize.to_sym => conds }
@@ -132,10 +133,13 @@ module PassiveRecord
132
133
 
133
134
  until !n.is_a?(HasManyThroughAssociation)
134
135
  key = n.through_class.to_s.singularize.to_sym
136
+ p [ :n_class, n.class, key ]
135
137
  hash = {key => hash}
136
138
  n = n.nested_association
137
139
  end
138
140
 
141
+ # binding.pry
142
+
139
143
  hash
140
144
  else
141
145
  nested_conds
@@ -144,7 +148,9 @@ module PassiveRecord
144
148
  end
145
149
 
146
150
  def where(conditions={})
147
- child_class.where(conditions.merge(intermediary_conditions))
151
+ merged_conditions = conditions.merge(intermediary_conditions)
152
+ # binding.pry
153
+ child_class.where(merged_conditions)
148
154
  end
149
155
  end
150
156
  end
@@ -1,4 +1,4 @@
1
1
  module PassiveRecord
2
2
  # passive_record version
3
- VERSION = "0.4.12"
3
+ VERSION = "0.4.13"
4
4
  end
@@ -352,6 +352,16 @@ describe "passive record models" do
352
352
  expect(network.tags.promoted).not_to include(unpromoted_tag)
353
353
  end
354
354
  end
355
+
356
+ describe 'should find related nested models through a manual habtm' do
357
+ let!(:special_category) { Post.first.create_category(special: true) }
358
+ let!(:unspecial_category) { Post.last.create_category(special: false) }
359
+
360
+ it 'should refine and restrict' do
361
+ expect(network.categories.special).to include(special_category)
362
+ expect(network.categories.special).not_to include(unspecial_category)
363
+ end
364
+ end
355
365
  end
356
366
  end
357
367
  end
@@ -578,7 +588,6 @@ describe "passive record models" do
578
588
 
579
589
  it 'should permit querying' do
580
590
  ResourceAllocation.create(user: user, resource: resource)
581
- # binding.pry
582
591
  expect(user.resources.where.all).to include(resource)
583
592
  end
584
593
  end
data/spec/spec_helper.rb CHANGED
@@ -122,6 +122,7 @@ class Network < Model
122
122
  has_many :posts, :through => :streams
123
123
  has_many :comments, :through => :posts
124
124
  has_many :tags, :through => :posts
125
+ has_many :categories, :through => :posts
125
126
  end
126
127
 
127
128
  class Stream < Model
@@ -153,6 +154,19 @@ class Tag < Model
153
154
  def self.promoted; where(promoted: true) end
154
155
  end
155
156
 
157
+ class Category < Model
158
+ attr_accessor :special
159
+ has_many :post_categories
160
+ has_many :posts, :through => :post_categories
161
+
162
+ def self.special; where(special: true) end
163
+ end
164
+
165
+ class PostCategory < Model
166
+ belongs_to :post
167
+ belongs_to :category
168
+ end
169
+
156
170
  class Post < Model
157
171
  belongs_to :author
158
172
  belongs_to :blog
@@ -160,6 +174,9 @@ class Post < Model
160
174
  has_many :commenters, :through => :comments, :class_name => "Author"
161
175
  has_and_belongs_to_many :tags
162
176
 
177
+ has_many :post_categories
178
+ has_many :categories, :through => :post_categories
179
+
163
180
  attr_accessor :active, :published_at
164
181
  before_create { @published_at = Time.now }
165
182
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: passive_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.12
4
+ version: 0.4.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joseph Weissman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-16 00:00:00.000000000 Z
11
+ date: 2016-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport