activerecord-polymorph 0.1.0 → 0.1.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: 52c2f6317a218c26936a2cc6b637b992cfddd239
4
- data.tar.gz: dd2c70fc9f51e69f4bdf8813a910a6879913c5a2
3
+ metadata.gz: 5d1b99dbcba39839072dfd1f95466e9a9aa8249a
4
+ data.tar.gz: ba0a4138bda24d8f5dc2577390fa4bd27b35ab62
5
5
  SHA512:
6
- metadata.gz: 1d004e0abd6224692cb789738c6c8fcb5552ab901bbc4c9423453c1db5aa8d559d775aac75945073dcdfae38be4a4e6637a53ae241e3917f7fde5822fd83ba57
7
- data.tar.gz: 9a0a30ca6bcfd69db7bac4eecb2ca3970b6e7f9e48c65dff9edc9bb1017c0efc68e8652de7d51689b2f97a445c208e266d8a3ac81896f79c84eca214b27a01e0
6
+ metadata.gz: 23c12a901d994fa3c6cb58ad447db3cda94d8fa5471270fe9d76e93e72fb2971b9fb5202a0ffa34a3756ebc7ce812284838435fb130978ab785e04b314e0df2f
7
+ data.tar.gz: bbfec582d55ab7144b18b0e3ba171d6476c66378512d13bf06ee1fcdb0de00c3af587f6515cf65d1e296ca22a8fb5d4f019c5d4ca579b4458623558140f14cee
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.gem
11
+ .byebug_history
data/README.md CHANGED
@@ -89,13 +89,13 @@ polymorph :participants, through: :comments, source_types: [:users, :robots], fi
89
89
  If we want to call these 'participants', but our database columns are already set to 'commenter_id' and 'commenter_type', we can invoke the `source_column` method:
90
90
 
91
91
  ```ruby
92
- polymorph :commenters, through: :comments, source_types: [:users, :robots], source_column: :commenter
92
+ polymorph :participants, through: :comments, source_types: [:users, :robots], source_column: :commenter
93
93
  ```
94
94
 
95
95
  If the ruby class cannot be inferred by the 'through' option, we can point it to the right place with `through_class`:
96
96
 
97
97
  ```ruby
98
- polymorph :commenters, through: :comments, source_types: [:users, :robots], through_class: Comments::Base
98
+ polymorph :participants, through: :comments, source_types: [:users, :robots], through_class: Comments::Base
99
99
  ```
100
100
 
101
101
  NB that this relation has somewhat limited support for further querying! Currently, we support count, pluck, and simple where clauses on common keys:
@@ -23,4 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "bundler", "~> 1.12"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
25
  spec.add_development_dependency "minitest", "~> 5.0"
26
+ spec.add_development_dependency "temping", "~> 3.7"
27
+ spec.add_development_dependency "sqlite3", "~> 1.3"
28
+ spec.add_development_dependency "byebug", "~> 9.0"
26
29
  end
@@ -1,5 +1,4 @@
1
1
  require "polymorph/relation"
2
- require "byebug"
3
2
 
4
3
  module Polymorph
5
4
  module Methods
@@ -17,7 +16,7 @@ module Polymorph
17
16
  source_types.map { |t| "#{t}.*" },
18
17
  source_types.product(fields).map { |a| "#{a[0]}.#{a[1]} AS #{a[0].to_s.singularize}_#{a[1]}" },
19
18
  "#{through}.#{source_column}_type",
20
- "'true'::boolean as polymorph_query"
19
+ "'is_polymorph' as polymorph_query"
21
20
  ].flatten.join(', '))
22
21
 
23
22
  source_types.each do |type|
@@ -33,6 +32,7 @@ module Polymorph
33
32
 
34
33
  through_class.define_singleton_method :instantiate, ->(attrs, column_types) {
35
34
  super(attrs, column_types).tap do |record|
35
+ break unless attrs['polymorph_query'].present?
36
36
  transfer_fields = fields.map { |field| [field, attrs["#{attrs[source_type].downcase}_#{field}"]] }.to_h
37
37
  record.assign_attributes(transfer_fields)
38
38
  end
@@ -16,7 +16,7 @@ module Polymorph
16
16
 
17
17
  def where(hash = {})
18
18
  fields = hash.slice(*@fields)
19
- fields.map do |field|
19
+ clause = fields.map do |field|
20
20
  %{(
21
21
  #{@source_types.map { |type| "#{type}.#{field[0]} = :#{field[0]}" }.join(" OR ")}
22
22
  )}
@@ -1,3 +1,3 @@
1
1
  module Polymorph
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-polymorph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Kiesel
@@ -66,6 +66,48 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '5.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: temping
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.7'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.7'
83
+ - !ruby/object:Gem::Dependency
84
+ name: sqlite3
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: byebug
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '9.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '9.0'
69
111
  description:
70
112
  email:
71
113
  - james.kiesel@gmail.com