query_methods_extend 1.0.0 → 1.0.1

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: 9c4039add270257fd9f5c8c1799aec94af2603eb
4
- data.tar.gz: 7a45d215f5a8f2307e60ccbc8d7feb594f0e3ff5
3
+ metadata.gz: c1c09d9a5b6095985c753cae8723a064f231c8ad
4
+ data.tar.gz: 51d97ba8f08c24129ddd7c43ff2ec35d0836f3d3
5
5
  SHA512:
6
- metadata.gz: 329c27fa87fc6f178f55ddb12d07fe2a5e69c11f74cd391d397ee1a0b5ce649a3041a99f55937290d4b79635bd08b3981d2e140881028a2a3eb6f9519114b660
7
- data.tar.gz: bb9845d99f036e524aaf7037df007351ee02e63e8200927a7d2c6a3c6879ee641a7202c697e90f81f1ffefacaaa73d2c56c7b5076af73f7f883a2131958d623e
6
+ metadata.gz: 0e5a639e1397544856539f123a5a8a1fcce44bdf4557a8f53e067933bde27112180e9906f35f0ca225d23127bc4dd88f350373ecd408ab8852a97ddc4da27ddb
7
+ data.tar.gz: f38a9b1a4cb249ea2f1fd0396b3aee65bb267c0204a44078f0f10add77b84d2d7622a72c9acbd1838639e5891f6dfa917f6d8d3349bdc8d4407dd2d5fee4f78f
@@ -13,10 +13,32 @@ module QueryMethodsExtend
13
13
  association = self.try(:reflect_on_association, method_name)
14
14
  result = false
15
15
  if association && association.try(:macro) == :has_many
16
- model_reflect = association.inverse_of
17
- model = model_reflect.active_record
18
- query = self.select(association.primary_key_column.name)
19
- result = model.where("#{model.table_name}.#{model_reflect.foreign_key.to_sym} IN (#{query.to_sql})")
16
+ options = association.options
17
+
18
+ if options[:through]
19
+ @check_association_exist_flag = false
20
+ return self.all.send(options[:through]).send(method_name)
21
+ end
22
+
23
+ query = self.select(association.active_record.primary_key)
24
+
25
+ if options[:as] && !association.inverse_of && association.klass
26
+ polymorphic_as = association.klass.reflect_on_association(options[:as])
27
+ if polymorphic_as.polymorphic? && association.active_record
28
+ polymorphic_model = polymorphic_as.active_record
29
+ model = association.active_record
30
+ @check_association_exist_flag = false
31
+ return polymorphic_as.active_record
32
+ .where("#{polymorphic_model.table_name}.#{polymorphic_as.foreign_type}".to_sym => model.name)
33
+ .where("#{polymorphic_model.table_name}.#{polymorphic_as.foreign_key}".to_sym => query)
34
+ end
35
+ end
36
+
37
+ model = association.options[:class] || association.inverse_of.active_record
38
+ foreign_key = association.options[:foreign_key] || association.inverse_of.foreign_key
39
+
40
+ result = model.where("#{model.table_name}.#{foreign_key.to_s}".to_sym => query)
41
+
20
42
  end
21
43
 
22
44
  @check_association_exist_flag = false
@@ -1,3 +1,3 @@
1
1
  module QueryMethodsExtend
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: query_methods_extend
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alicuche
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-07 00:00:00.000000000 Z
11
+ date: 2015-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -121,6 +121,7 @@ files:
121
121
  - lib/query_methods_extend/spec/union_spec.rb
122
122
  - lib/query_methods_extend/union.rb
123
123
  - lib/query_methods_extend/version.rb
124
+ - query_methods_extend-1.0.0.gem
124
125
  - query_methods_extend.gemspec
125
126
  - spec/models/book.rb
126
127
  - spec/models/category.rb