ransack 2.3.0 → 2.3.1

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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +18 -20
  3. data/CHANGELOG.md +9 -1
  4. data/Gemfile +17 -5
  5. data/README.md +25 -31
  6. data/lib/ransack.rb +1 -2
  7. data/lib/ransack/adapters/active_record/context.rb +11 -78
  8. data/lib/ransack/adapters/active_record/ransack/constants.rb +12 -0
  9. data/lib/ransack/adapters/active_record/ransack/context.rb +1 -6
  10. data/lib/ransack/adapters/active_record/ransack/nodes/condition.rb +1 -1
  11. data/lib/ransack/constants.rb +0 -3
  12. data/lib/ransack/helpers/form_builder.rb +5 -11
  13. data/lib/ransack/locale/sk.yml +70 -0
  14. data/lib/ransack/nodes/condition.rb +8 -0
  15. data/lib/ransack/predicate.rb +2 -1
  16. data/lib/ransack/version.rb +1 -1
  17. data/polyamorous/lib/polyamorous.rb +2 -7
  18. data/polyamorous/lib/polyamorous/{activerecord_5.2.1_ruby_2 → activerecord_5.2_ruby_2}/join_association.rb +0 -2
  19. data/polyamorous/lib/polyamorous/{activerecord_5.2.1_ruby_2 → activerecord_5.2_ruby_2}/join_dependency.rb +0 -2
  20. data/polyamorous/lib/polyamorous/{activerecord_5.2.0_ruby_2 → activerecord_5.2_ruby_2}/reflection.rb +0 -0
  21. data/polyamorous/lib/polyamorous/activerecord_6.0_ruby_2/join_association.rb +1 -1
  22. data/polyamorous/lib/polyamorous/activerecord_6.0_ruby_2/reflection.rb +1 -1
  23. data/polyamorous/polyamorous.gemspec +1 -9
  24. data/ransack.gemspec +3 -12
  25. data/spec/helpers/polyamorous_helper.rb +1 -10
  26. data/spec/ransack/predicate_spec.rb +38 -0
  27. data/spec/ransack/search_spec.rb +1 -8
  28. data/spec/spec_helper.rb +2 -0
  29. data/spec/support/schema.rb +3 -1
  30. metadata +14 -146
  31. data/polyamorous/lib/polyamorous/activerecord_5.0_ruby_2/join_association.rb +0 -2
  32. data/polyamorous/lib/polyamorous/activerecord_5.0_ruby_2/join_dependency.rb +0 -2
  33. data/polyamorous/lib/polyamorous/activerecord_5.1_ruby_2/join_association.rb +0 -31
  34. data/polyamorous/lib/polyamorous/activerecord_5.1_ruby_2/join_dependency.rb +0 -112
  35. data/polyamorous/lib/polyamorous/activerecord_5.2.0_ruby_2/join_association.rb +0 -31
  36. data/polyamorous/lib/polyamorous/activerecord_5.2.0_ruby_2/join_dependency.rb +0 -112
  37. data/polyamorous/lib/polyamorous/activerecord_5.2.1_ruby_2/reflection.rb +0 -2
@@ -1,2 +0,0 @@
1
- # active_record_5.0_ruby_2/join_association.rb
2
- require 'polyamorous/activerecord_5.1_ruby_2/join_association'
@@ -1,2 +0,0 @@
1
- # active_record_5.0_ruby_2/join_dependency.rb
2
- require 'polyamorous/activerecord_5.1_ruby_2/join_dependency'
@@ -1,31 +0,0 @@
1
- # active_record_5.1_ruby_2/join_association.rb
2
-
3
- module Polyamorous
4
- module JoinAssociationExtensions
5
- include SwappingReflectionClass
6
- def self.prepended(base)
7
- base.class_eval { attr_reader :join_type }
8
- end
9
-
10
- def initialize(reflection, children, polymorphic_class = nil, join_type = Arel::Nodes::InnerJoin)
11
- @join_type = join_type
12
- if polymorphic_class && ::ActiveRecord::Base > polymorphic_class
13
- swapping_reflection_klass(reflection, polymorphic_class) do |reflection|
14
- super(reflection, children)
15
- self.reflection.options[:polymorphic] = true
16
- end
17
- else
18
- super(reflection, children)
19
- end
20
- end
21
-
22
- def build_constraint(klass, table, key, foreign_table, foreign_key)
23
- if reflection.polymorphic?
24
- super(klass, table, key, foreign_table, foreign_key)
25
- .and(foreign_table[reflection.foreign_type].eq(reflection.klass.name))
26
- else
27
- super(klass, table, key, foreign_table, foreign_key)
28
- end
29
- end
30
- end
31
- end
@@ -1,112 +0,0 @@
1
- # active_record_5.1_ruby_2/join_dependency.rb
2
-
3
- module Polyamorous
4
- module JoinDependencyExtensions
5
- # Replaces ActiveRecord::Associations::JoinDependency#build
6
- #
7
- def build(associations, base_klass)
8
- associations.map do |name, right|
9
- if name.is_a? Join
10
- reflection = find_reflection base_klass, name.name
11
- reflection.check_validity!
12
- reflection.check_eager_loadable!
13
-
14
- klass = if reflection.polymorphic?
15
- name.klass || base_klass
16
- else
17
- reflection.klass
18
- end
19
- JoinAssociation.new(reflection, build(right, klass), name.klass, name.type)
20
- else
21
- reflection = find_reflection base_klass, name
22
- reflection.check_validity!
23
- reflection.check_eager_loadable!
24
-
25
- if reflection.polymorphic?
26
- raise ActiveRecord::EagerLoadPolymorphicError.new(reflection)
27
- end
28
- JoinAssociation.new reflection, build(right, reflection.klass)
29
- end
30
- end
31
- end
32
-
33
- # Replaces ActiveRecord::Associations::JoinDependency#join_constraints
34
- #
35
- # This internal method was changed in Rails 5.0 by commit
36
- # https://github.com/rails/rails/commit/e038975 which added
37
- # left_outer_joins (see #make_polyamorous_left_outer_joins below) and added
38
- # passing an additional argument, `join_type`, to #join_constraints.
39
- #
40
- def join_constraints(outer_joins, join_type)
41
- joins = join_root.children.flat_map { |child|
42
- if join_type == Arel::Nodes::OuterJoin
43
- make_polyamorous_left_outer_joins join_root, child
44
- else
45
- make_polyamorous_inner_joins join_root, child
46
- end
47
- }
48
-
49
- joins.concat outer_joins.flat_map { |oj|
50
- if join_root.match? oj.join_root
51
- walk(join_root, oj.join_root)
52
- else
53
- oj.join_root.children.flat_map { |child|
54
- make_outer_joins(oj.join_root, child)
55
- }
56
- end
57
- }
58
- end
59
-
60
- # Replaces ActiveRecord::Associations::JoinDependency#make_left_outer_joins,
61
- # a new method that was added in Rails 5.0 with the following commit:
62
- # https://github.com/rails/rails/commit/e038975
63
- #
64
- def make_polyamorous_left_outer_joins(parent, child)
65
- tables = child.tables
66
- join_type = Arel::Nodes::OuterJoin
67
- info = make_constraints parent, child, tables, join_type
68
-
69
- [info] + child.children.flat_map { |c|
70
- make_polyamorous_left_outer_joins(child, c)
71
- }
72
- end
73
-
74
- # Replaces ActiveRecord::Associations::JoinDependency#make_inner_joins
75
- #
76
- def make_polyamorous_inner_joins(parent, child)
77
- tables = child.tables
78
- join_type = child.join_type || Arel::Nodes::InnerJoin
79
- info = make_constraints parent, child, tables, join_type
80
-
81
- [info] + child.children.flat_map { |c|
82
- make_polyamorous_inner_joins(child, c)
83
- }
84
- end
85
-
86
- private :make_polyamorous_inner_joins, :make_polyamorous_left_outer_joins
87
-
88
- module ClassMethods
89
- # Prepended before ActiveRecord::Associations::JoinDependency#walk_tree
90
- #
91
- def walk_tree(associations, hash)
92
- case associations
93
- when TreeNode
94
- associations.add_to_tree(hash)
95
- when Hash
96
- associations.each do |k, v|
97
- cache =
98
- if TreeNode === k
99
- k.add_to_tree(hash)
100
- else
101
- hash[k] ||= {}
102
- end
103
- walk_tree(v, cache)
104
- end
105
- else
106
- super(associations, hash)
107
- end
108
- end
109
- end
110
-
111
- end
112
- end
@@ -1,31 +0,0 @@
1
- # active_record_5.2_ruby_2/join_association.rb
2
-
3
- module Polyamorous
4
- module JoinAssociationExtensions
5
- include SwappingReflectionClass
6
- def self.prepended(base)
7
- base.class_eval { attr_reader :join_type }
8
- end
9
-
10
- def initialize(reflection, children, alias_tracker, polymorphic_class = nil, join_type = Arel::Nodes::InnerJoin)
11
- @join_type = join_type
12
- if polymorphic_class && ::ActiveRecord::Base > polymorphic_class
13
- swapping_reflection_klass(reflection, polymorphic_class) do |reflection|
14
- super(reflection, children, alias_tracker)
15
- self.reflection.options[:polymorphic] = true
16
- end
17
- else
18
- super(reflection, children, alias_tracker)
19
- end
20
- end
21
-
22
- def build_constraint(klass, table, key, foreign_table, foreign_key)
23
- if reflection.polymorphic?
24
- super(klass, table, key, foreign_table, foreign_key)
25
- .and(foreign_table[reflection.foreign_type].eq(reflection.klass.name))
26
- else
27
- super(klass, table, key, foreign_table, foreign_key)
28
- end
29
- end
30
- end
31
- end
@@ -1,112 +0,0 @@
1
- # active_record_5.2_ruby_2/join_dependency.rb
2
-
3
- module Polyamorous
4
- module JoinDependencyExtensions
5
- # Replaces ActiveRecord::Associations::JoinDependency#build
6
- #
7
- def build(associations, base_klass)
8
- associations.map do |name, right|
9
- if name.is_a? Join
10
- reflection = find_reflection base_klass, name.name
11
- reflection.check_validity!
12
- reflection.check_eager_loadable!
13
-
14
- klass = if reflection.polymorphic?
15
- name.klass || base_klass
16
- else
17
- reflection.klass
18
- end
19
- JoinAssociation.new(reflection, build(right, klass), alias_tracker, name.klass, name.type)
20
- else
21
- reflection = find_reflection base_klass, name
22
- reflection.check_validity!
23
- reflection.check_eager_loadable!
24
-
25
- if reflection.polymorphic?
26
- raise ActiveRecord::EagerLoadPolymorphicError.new(reflection)
27
- end
28
- JoinAssociation.new(reflection, build(right, reflection.klass), alias_tracker)
29
- end
30
- end
31
- end
32
-
33
- # Replaces ActiveRecord::Associations::JoinDependency#join_constraints
34
- #
35
- # This internal method was changed in Rails 5.0 by commit
36
- # https://github.com/rails/rails/commit/e038975 which added
37
- # left_outer_joins (see #make_polyamorous_left_outer_joins below) and added
38
- # passing an additional argument, `join_type`, to #join_constraints.
39
- #
40
- def join_constraints(outer_joins, join_type)
41
- joins = join_root.children.flat_map { |child|
42
- if join_type == Arel::Nodes::OuterJoin
43
- make_polyamorous_left_outer_joins join_root, child
44
- else
45
- make_polyamorous_inner_joins join_root, child
46
- end
47
- }
48
-
49
- joins.concat outer_joins.flat_map { |oj|
50
- if join_root.match?(oj.join_root) && join_root.table.name == oj.join_root.table.name
51
- walk(join_root, oj.join_root)
52
- else
53
- oj.join_root.children.flat_map { |child|
54
- make_outer_joins(oj.join_root, child)
55
- }
56
- end
57
- }
58
- end
59
-
60
- # Replaces ActiveRecord::Associations::JoinDependency#make_left_outer_joins,
61
- # a new method that was added in Rails 5.0 with the following commit:
62
- # https://github.com/rails/rails/commit/e038975
63
- #
64
- def make_polyamorous_left_outer_joins(parent, child)
65
- tables = child.tables
66
- join_type = Arel::Nodes::OuterJoin
67
- info = make_constraints parent, child, tables, join_type
68
-
69
- info + child.children.flat_map { |c|
70
- make_polyamorous_left_outer_joins(child, c)
71
- }
72
- end
73
-
74
- # Replaces ActiveRecord::Associations::JoinDependency#make_inner_joins
75
- #
76
- def make_polyamorous_inner_joins(parent, child)
77
- tables = child.tables
78
- join_type = child.join_type || Arel::Nodes::InnerJoin
79
- info = make_constraints parent, child, tables, join_type
80
-
81
- info + child.children.flat_map { |c|
82
- make_polyamorous_inner_joins(child, c)
83
- }
84
- end
85
-
86
- private :make_polyamorous_inner_joins, :make_polyamorous_left_outer_joins
87
-
88
- module ClassMethods
89
- # Prepended before ActiveRecord::Associations::JoinDependency#walk_tree
90
- #
91
- def walk_tree(associations, hash)
92
- case associations
93
- when TreeNode
94
- associations.add_to_tree(hash)
95
- when Hash
96
- associations.each do |k, v|
97
- cache =
98
- if TreeNode === k
99
- k.add_to_tree(hash)
100
- else
101
- hash[k] ||= {}
102
- end
103
- walk_tree(v, cache)
104
- end
105
- else
106
- super(associations, hash)
107
- end
108
- end
109
- end
110
-
111
- end
112
- end
@@ -1,2 +0,0 @@
1
- # active_record_5.2.1_ruby_2/reflection.rb
2
- require 'polyamorous/activerecord_5.2.0_ruby_2/reflection'