active_scaffold 3.6.17 → 3.6.20

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
  SHA256:
3
- metadata.gz: 9dfa34216419b18c65d503771afc1f0083561f5419963c858df2948b0c3e9ed2
4
- data.tar.gz: c4f0d58b4dc6afee868718214fd725c2004898b903d90fd5b94b09133cea6294
3
+ metadata.gz: 5a6a07cc017cbfdb8a278a7297ac61d6e6d4f3802240a157a366b2829cf3661e
4
+ data.tar.gz: 00d4f1bcbacca4e2a04f87db162be697ebd82f73aae9b23dbd1ffd3e43614610
5
5
  SHA512:
6
- metadata.gz: bfc6d60cb5e2df8fbc367ca6854c173ad94b04bd4309e430ff9c61351ebfe17c3162e50f8c9e6409ad722b8e8298cca8f9da28f9ba0dcc2f3b51e64b114a4844
7
- data.tar.gz: ae5b110172f4479df2c3456061a17e289ab222b3143135893c4866d4f3f04f74d1c873e07e71262c992c946450bdabe7f7b9457dd1b15bdbfa5ac2db1e9fa92f
6
+ metadata.gz: 78f5e7472c1cbb36fd40c6f0a3b06f797e87e2969127d5506eee6f7b25d1f2b794c35684f477b1204e08d9c2c696b78c3c849b481d3b43c169ecf16b7f99c0f6
7
+ data.tar.gz: 98f6fed6e5ac8512b74e27155285c0b81f0cd422e0cfbab3f0a01ba5e4a9e92a32cb8f4a199ef8118e71aceb188f9137e5d8bed48bc9ee0903ad420b92e771b5
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,14 @@
1
+ = 3.6.20
2
+ - Fix numeric search on field search for rails >= 5.0
3
+
4
+ = 3.6.19
5
+ - Improve create action in has_many through singular association, supporting more cases
6
+
7
+ = 3.6.18
8
+ - Add references only for column.search_joins which are in column.includes, and do search_joins for the rest, search_joins default to includes, so won't change behaviour on most cases, but allows to preload some associations without joining in the query
9
+ - Don't define default search_joins, as it may return includes, so search_joins will default to includes unless is defined, and the previous change won't change the behaviour if user doesn't define search_joins
10
+ - Fix update_columns on through association
11
+
1
12
  = 3.6.17
2
13
  - Don't add includes or left joins for constrained columns, as they are ignored on sorting clause
3
14
  - Fix deprecation on cache counts with rails 5, and fix the queries for rails >= 5.1
@@ -73,7 +84,7 @@
73
84
  = 3.6.1
74
85
  - Display group cols vertically when subform layout is vertical
75
86
  - Fix html attributes for input datetime on field search, when jquery ui is not used
76
- - Fix constraint columns for nested list on through assocaitions
87
+ - Fix constraint columns for nested list on through associations
77
88
  - Support rails 6.1
78
89
 
79
90
  = 3.6.0
@@ -31,6 +31,22 @@ module ActiveScaffold::Actions
31
31
  params_hash params[:search]
32
32
  end
33
33
 
34
+ def set_outer_joins_for_search(columns)
35
+ references = []
36
+ outer_joins = []
37
+ columns.each do |column|
38
+ next unless column.search_joins.present?
39
+ if column.includes.present? && list_columns.include?(column)
40
+ references << (column.search_joins & column.includes)
41
+ outer_joins << (column.search_joins - column.includes)
42
+ else
43
+ outer_joins << column.search_joins
44
+ end
45
+ end
46
+ active_scaffold_references.concat references.flatten.uniq.compact
47
+ active_scaffold_outer_joins.concat outer_joins.flatten.uniq.compact
48
+ end
49
+
34
50
  def store_search_params_into_session
35
51
  if active_scaffold_config.store_user_settings
36
52
  if params[:search].present?
@@ -100,8 +100,7 @@ module ActiveScaffold::Actions
100
100
  record = params[:id] ? copy_attributes(find_if_allowed(params[:id], :read)) : new_model
101
101
  apply_constraints_to_record(record) unless scope || params[:id]
102
102
  create_association_with_parent record, true if nested?
103
- value = column_value_from_param_value(record, column, value)
104
- record.send "#{column.name}=", value
103
+ update_column_from_params(record, column, value, true)
105
104
  record.id = params[:id]
106
105
  record
107
106
  end
@@ -161,10 +161,14 @@ module ActiveScaffold::Actions
161
161
  search_condition = self.class.condition_for_column(column, value, text_search)
162
162
  next if search_condition.blank?
163
163
 
164
- joins_for_search_on_column(column, count_includes)
165
164
  active_scaffold_conditions << search_condition
166
165
  filtered_columns << column
167
166
  end
167
+ if grouped_search? || active_scaffold_config.list.user.count_includes.present?
168
+ active_scaffold_outer_joins.concat filtered_columns.map(&:search_joins).flatten.uniq.compact
169
+ else
170
+ set_outer_joins_for_search filtered_columns
171
+ end
168
172
  if filtered_columns.present? || grouped_search?
169
173
  @filtered = active_scaffold_config.field_search.human_conditions ? filtered_columns : true
170
174
  end
@@ -172,14 +176,6 @@ module ActiveScaffold::Actions
172
176
  active_scaffold_config.list.user.page = nil
173
177
  end
174
178
 
175
- def joins_for_search_on_column(column, count_includes)
176
- if count_includes.nil? && column.includes.present? && list_columns.include?(column) && !grouped_search?
177
- active_scaffold_references << column.includes
178
- elsif column.search_joins.present?
179
- active_scaffold_outer_joins << column.search_joins
180
- end
181
- end
182
-
183
179
  def field_search_ignore?
184
180
  active_scaffold_config.list.always_show_search && active_scaffold_config.list.search_partial == 'field_search'
185
181
  end
@@ -122,16 +122,21 @@ module ActiveScaffold::Actions
122
122
  # has_many is done by beginning_of_chain and rails if direct association, not in through associations
123
123
  return false if nested.has_many? && !nested.association.through?
124
124
  return false if check_match && !nested.match_model?(active_scaffold_config.model)
125
- nested.child_association && nested_parent_record
125
+ (nested.child_association || nested.create_through_singular?) && nested_parent_record
126
126
  end
127
127
 
128
128
  def create_association_with_parent(record, check_match = false)
129
129
  return unless create_association_with_parent?(check_match)
130
- if nested.child_association.singular?
130
+ if nested.child_association&.singular?
131
131
  record.send("#{nested.child_association.name}=", nested_parent_record)
132
- elsif nested.association.through_singular? && nested.child_association.through_singular?
133
- through = nested_parent_record.send(nested.association.through_reflection.name)
134
- record.send("#{nested.child_association.through_reflection.name}=", through)
132
+ elsif nested.create_through_singular?
133
+ through = nested_parent_record.send(nested.association.through_reflection.name) ||
134
+ nested_parent_record.send("build_#{nested.association.through_reflection.name}")
135
+ if nested.source_reflection.reverse_association.collection?
136
+ record.send(nested.source_reflection.reverse) << through
137
+ else
138
+ record.send("#{nested.source_reflection.reverse}=", through)
139
+ end
135
140
  else
136
141
  record.send(nested.child_association.name) << nested_parent_record
137
142
  end
@@ -26,12 +26,7 @@ module ActiveScaffold::Actions
26
26
  @filtered = search_conditions.present?
27
27
  active_scaffold_conditions.concat search_conditions if @filtered
28
28
 
29
- references, outer_joins = columns.partition do |column|
30
- column.includes.present? && list_columns.include?(column)
31
- end
32
- active_scaffold_references.concat references.map(&:includes).flatten.uniq.compact
33
- active_scaffold_outer_joins.concat outer_joins.map(&:search_joins).flatten.uniq.compact
34
-
29
+ set_outer_joins_for_search columns
35
30
  active_scaffold_config.list.user.page = nil
36
31
  else
37
32
  super
@@ -353,7 +353,6 @@ module ActiveScaffold::DataStructures
353
353
  if delegated_association
354
354
  self.includes = includes ? [delegated_association.name => includes] : [delegated_association.name]
355
355
  end
356
- self.search_joins = includes.clone if includes
357
356
 
358
357
  # default all the configurable variables
359
358
  self.css_class = ''
@@ -94,12 +94,20 @@ module ActiveScaffold::DataStructures
94
94
  return false unless through_association?
95
95
  return true if association.through_reflection.options[:through] # create not possible, too many levels
96
96
  return true if association.source_reflection.options[:through] # create not possible, too many levels
97
- return false if association.through_singular? # create allowed, AS has code for this
97
+ return false if create_through_singular? # create allowed, AS has code for this
98
98
 
99
99
  # create allowed only if through reflection in record to be created is included in create columns
100
100
  !child_association || !columns.include?(child_association.through_reflection.name)
101
101
  end
102
102
 
103
+ def create_through_singular?
104
+ association.through_singular? && source_reflection.reverse
105
+ end
106
+
107
+ def source_reflection
108
+ @source_reflection ||= ActiveScaffold::DataStructures::Association::ActiveRecord.new(association.source_reflection)
109
+ end
110
+
103
111
  def through_association?
104
112
  association.through?
105
113
  end
@@ -297,7 +297,7 @@ module ActiveScaffold
297
297
  end
298
298
  when :float then value.to_f
299
299
  when :decimal
300
- ::ActiveRecord::Type::Decimal.new.type_cast_from_user(value)
300
+ ::ActiveRecord::Type::Decimal.new.send(Rails.version < '5.0' ? :type_cast_from_user : :cast, value)
301
301
  else
302
302
  value
303
303
  end
@@ -78,7 +78,7 @@ class ActiveScaffold::Tableless < ActiveRecord::Base # rubocop:disable Rails/App
78
78
  class << scope; include RelationExtension; end
79
79
  assoc_conditions = scope.proxy_association&.send(:association_scope)&.conditions
80
80
  if assoc_conditions&.present?
81
- scope.conditions.concat assoc_conditions.map { |c| c.is_a?(Hash) ? c[klass.table_name] || c : c }
81
+ scope.conditions.concat(assoc_conditions.map { |c| c.is_a?(Hash) ? c[klass.table_name] || c : c })
82
82
  end
83
83
  end
84
84
  end
@@ -167,10 +167,11 @@ class ActiveScaffold::Tableless < ActiveRecord::Base # rubocop:disable Rails/App
167
167
  end
168
168
 
169
169
  def exists?
170
- size > 0
170
+ size.positive?
171
171
  end
172
172
 
173
173
  private
174
+
174
175
  def exec_queries
175
176
  @records = @klass.find_all(self)
176
177
  @loaded = true
@@ -2,7 +2,7 @@ module ActiveScaffold
2
2
  module Version
3
3
  MAJOR = 3
4
4
  MINOR = 6
5
- PATCH = 17
5
+ PATCH = 20
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_scaffold
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.6.17
4
+ version: 3.6.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Many, see README
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-01 00:00:00.000000000 Z
11
+ date: 2023-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -477,7 +477,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
477
477
  - !ruby/object:Gem::Version
478
478
  version: '0'
479
479
  requirements: []
480
- rubygems_version: 3.0.9
480
+ rubygems_version: 3.2.3
481
481
  signing_key:
482
482
  specification_version: 4
483
483
  summary: Rails 4.x and 5.x versions of ActiveScaffold supporting prototype and jquery