association_scope 0.3.3 → 0.4.0
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.
- checksums.yaml +4 -4
- data/lib/association_scope/errors/polymorphic_association_error.rb +17 -0
- data/lib/association_scope/scope/belongs_to_reflection.rb +4 -0
- data/lib/association_scope/scope/has_many_reflection.rb +2 -2
- data/lib/association_scope/scope/through_reflection.rb +1 -1
- data/lib/association_scope/version.rb +1 -1
- data/lib/association_scope.rb +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67d2f037f4c3007105757fe5b90f5307eb56614979e7cd4fa83d9036b5584321
|
4
|
+
data.tar.gz: d775072058420799584cf18dc27d80c246070dfd2ae1246e084f0a25acf3aa44
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5aa81882d47e6207b82deb659f43f3010e83d985fe1bed9a411e29c5796082509c4d19f4435bfdbb9d8a636878c06ac3dde49e7543bf5f7b7db38ec4583d0504
|
7
|
+
data.tar.gz: 22d3f940c21d6e1722eef994d0294a80d6e3f80a87a3bbadba1f457f1eeb6ef54fecc6ef3c9d761100213dcdc669f04c5f242cc8e95f4546151639f15727eb25
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module AssociationScope
|
4
|
+
class PolymorphicAssociationError < StandardError
|
5
|
+
attr_accessor :association,
|
6
|
+
:model
|
7
|
+
|
8
|
+
def initialize(association: nil, model: nil)
|
9
|
+
@association = association
|
10
|
+
@model = model
|
11
|
+
end
|
12
|
+
|
13
|
+
def message
|
14
|
+
"Association :#{association} is polymorph in #{model}!"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -4,6 +4,10 @@ module AssociationScope
|
|
4
4
|
class Scope
|
5
5
|
class BelongsToReflection < Scope
|
6
6
|
def apply
|
7
|
+
if reflection_details.options[:polymorphic]
|
8
|
+
raise PolymorphicAssociationError.new association: association, model: model
|
9
|
+
end
|
10
|
+
|
7
11
|
association = @association
|
8
12
|
class_name = reflection_details.options[:class_name]&.constantize || association.camelize.constantize
|
9
13
|
foreign_key = reflection_details.options[:foreign_key]
|
@@ -7,9 +7,9 @@ module AssociationScope
|
|
7
7
|
class_name = reflection_details.options[:class_name]&.constantize || association.singularize.camelize.constantize
|
8
8
|
|
9
9
|
association = @association.pluralize
|
10
|
-
column_name = model.to_s.underscore
|
10
|
+
column_name = reflection_details.options[:as] || model.to_s.underscore
|
11
11
|
|
12
|
-
raise AssociationMissingError.new(missing_in: class_name, association: column_name) unless class_name.reflections.has_key?(column_name)
|
12
|
+
raise AssociationMissingError.new(missing_in: class_name, association: column_name) unless class_name.reflections.has_key?(column_name.to_s)
|
13
13
|
|
14
14
|
model.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
15
15
|
scope association, -> do
|
@@ -39,7 +39,7 @@ module AssociationScope
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def compute_second_join class_name
|
42
|
-
if %w[HasOneReflection BelongsToReflection].include?(reflection_type
|
42
|
+
if %w[HasOneReflection BelongsToReflection].include?(reflection_type(class_name))
|
43
43
|
model.to_s.underscore.to_sym
|
44
44
|
else
|
45
45
|
model.to_s.underscore.pluralize.to_sym
|
data/lib/association_scope.rb
CHANGED
@@ -9,6 +9,7 @@ require "association_scope/scope/has_and_belongs_to_many_reflection"
|
|
9
9
|
require "association_scope/scope/through_reflection"
|
10
10
|
|
11
11
|
require "association_scope/errors/association_missing_error"
|
12
|
+
require "association_scope/errors/polymorphic_association_error"
|
12
13
|
|
13
14
|
module AssociationScope
|
14
15
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: association_scope
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- datae
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '3.10'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: awesome_print
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.9.2
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.9.2
|
69
83
|
description: AssociationScope adds useful scopes targeting Associations in ActiveRecord.
|
70
84
|
email:
|
71
85
|
- accounts@datae.de
|
@@ -78,6 +92,7 @@ files:
|
|
78
92
|
- Rakefile
|
79
93
|
- lib/association_scope.rb
|
80
94
|
- lib/association_scope/errors/association_missing_error.rb
|
95
|
+
- lib/association_scope/errors/polymorphic_association_error.rb
|
81
96
|
- lib/association_scope/scope.rb
|
82
97
|
- lib/association_scope/scope/belongs_to_reflection.rb
|
83
98
|
- lib/association_scope/scope/has_and_belongs_to_many_reflection.rb
|
@@ -107,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
122
|
- !ruby/object:Gem::Version
|
108
123
|
version: '0'
|
109
124
|
requirements: []
|
110
|
-
rubygems_version: 3.2.
|
125
|
+
rubygems_version: 3.2.25
|
111
126
|
signing_key:
|
112
127
|
specification_version: 4
|
113
128
|
summary: AssociationScope adds useful scopes targeting Associations in ActiveRecord.
|