brick 1.0.250 → 1.0.252
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/brick/extensions.rb +32 -26
- data/lib/brick/rails/engine.rb +2 -2
- data/lib/brick/version_number.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7bb30040fa7e3a7e755f0d853559f3fe2c9d2dc94af4b6ffbaceb39ef41d981f
|
|
4
|
+
data.tar.gz: 21642081c09d80c40b585ee838a8d4436254f4746cf4798e4cfa6eaf04cdccf7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz: '
|
|
6
|
+
metadata.gz: ff10a4dc80c8e663be90c6c6e2b489763312c81834b2303b91799354b91b0bfd8b3d54343ab8ebc17665e17b5a039a53b336822d4529509d1d9f6ba588b403c1
|
|
7
|
+
data.tar.gz: '0912de41a2ee1651470e764234fd7394adcba3b16b618fd20359038010fb37a182746b386816fb5673eef7a0848b472fbdec9cea846dd510614cb6286e7b1403'
|
data/lib/brick/extensions.rb
CHANGED
|
@@ -74,8 +74,9 @@ module ActiveRecord
|
|
|
74
74
|
|
|
75
75
|
# Accommodate STI
|
|
76
76
|
def find_real_model(params)
|
|
77
|
-
if params && ((sub_name = params.fetch(inheritance_column, nil)).present? ||
|
|
78
|
-
(sub_name = params[name.underscore]&.fetch(
|
|
77
|
+
if params && ((sub_name = params.fetch(inh_col = "__#{inheritance_column}", nil)).present? ||
|
|
78
|
+
(sub_name = params[name.underscore]&.fetch(inh_col, nil)))
|
|
79
|
+
sub_name = sub_name.split(',') if sub_name.include?(',')
|
|
79
80
|
sub_name = sub_name.first if sub_name.is_a?(Array) # Support the params style that gets returned from #_brick_querying
|
|
80
81
|
# Make sure the chosen model is really the same or a subclass of this model
|
|
81
82
|
return self if sub_name.blank?
|
|
@@ -128,6 +129,11 @@ module ActiveRecord
|
|
|
128
129
|
end
|
|
129
130
|
case ks.length
|
|
130
131
|
when 1
|
|
132
|
+
if k == self.inheritance_column && self.name == v && (children = self.descendants).present?
|
|
133
|
+
# Modifying only the underlying where_values_hash is enough to cause inheritance_column types to work properly.
|
|
134
|
+
v << children.map { |sti_child| ",#{sti_child.name}" }.join
|
|
135
|
+
next
|
|
136
|
+
end
|
|
131
137
|
next unless self.column_names.any?(where_col) || self._brick_get_fks.include?(where_col)
|
|
132
138
|
when 2
|
|
133
139
|
assoc_name = ks.first.to_sym
|
|
@@ -483,24 +489,24 @@ module ActiveRecord
|
|
|
483
489
|
@_br_cust_cols ||= {}
|
|
484
490
|
end
|
|
485
491
|
|
|
486
|
-
def _brick_find_permits(
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
492
|
+
def _brick_find_permits(current_permits, is_for_expects = nil, done_models = [])
|
|
493
|
+
return current_permits if done_models.include?(self)
|
|
494
|
+
|
|
495
|
+
done_models << self
|
|
496
|
+
self.reflect_on_all_associations.select { |assoc| !assoc.belongs_to? }.each do |assoc|
|
|
497
|
+
if assoc.options[:through]
|
|
498
|
+
current_permits << { "#{assoc.name.to_s.singularize}_ids".to_sym => [] }
|
|
499
|
+
end
|
|
500
|
+
if self.instance_methods.include?(:"#{assoc.name}_attributes=")
|
|
501
|
+
next if assoc.source_reflection.nil?
|
|
502
|
+
|
|
503
|
+
# Support nested attributes which use the friendly_id gem
|
|
504
|
+
assoc.klass._brick_nested_friendly_id if Object.const_defined?('FriendlyId') &&
|
|
505
|
+
assoc.klass.instance_variable_get(:@friendly_id_config)
|
|
506
|
+
assoc.klass._brick_find_permits((new_permits = assoc.klass._brick_all_fields), is_for_expects, done_models)
|
|
507
|
+
new_permits << :_destroy
|
|
508
|
+
new_permits = [new_permits] if is_for_expects
|
|
509
|
+
current_permits << { "#{assoc.name}_attributes".to_sym => new_permits }
|
|
504
510
|
end
|
|
505
511
|
end
|
|
506
512
|
current_permits
|
|
@@ -1109,9 +1115,9 @@ JOIN (SELECT #{hm_selects.map { |s| _br_quoted_name("#{'br_t0.' if from_clause}#
|
|
|
1109
1115
|
end
|
|
1110
1116
|
tbl_and_col_name << v_parts.last
|
|
1111
1117
|
if v.last.is_a?(String) && ['>', '<'].include?(first_char = v.last.first[0]) # Greater than or less than?
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
where_comparisons << "#{tbl_and_col_name.join('.')} #{first_char} #{
|
|
1118
|
+
val = v.last.first[1..-1]
|
|
1119
|
+
val = "'#{val}'" unless [:integer, :boolean, :decimal, :float].include?(klass.columns_hash[v.first].type)
|
|
1120
|
+
where_comparisons << "#{tbl_and_col_name.join('.')} #{first_char} #{val}"
|
|
1115
1121
|
else
|
|
1116
1122
|
(is_not ? where_nots : s)[tbl_and_col_name.join('.')] = v.last
|
|
1117
1123
|
end
|
|
@@ -1836,7 +1842,7 @@ class Object
|
|
|
1836
1842
|
code << " has_secure_password\n"
|
|
1837
1843
|
end
|
|
1838
1844
|
# Accommodate singular or camel-cased table names such as "order_detail" or "OrderDetails"
|
|
1839
|
-
code << " self.table_name = '#{self.table_name = matching}'\n" if
|
|
1845
|
+
code << " self.table_name = '#{self.table_name = matching}'\n" if table_name != matching
|
|
1840
1846
|
|
|
1841
1847
|
if (inh_col = relation.fetch(:sti_col, nil) ||
|
|
1842
1848
|
::Brick.config.sti_type_column.find { |_k, v| v.include?(matching) }&.first)
|
|
@@ -1877,7 +1883,7 @@ class Object
|
|
|
1877
1883
|
if our_pks.length > 1 && pk_mutator
|
|
1878
1884
|
new_model_class.send(pk_mutator, our_pks)
|
|
1879
1885
|
code << " self.#{pk_mutator[0..-2]} = #{our_pks.map(&:to_sym).inspect}\n"
|
|
1880
|
-
|
|
1886
|
+
elsif new_model_class.primary_key != our_pks.first
|
|
1881
1887
|
new_model_class.primary_key = (pk_sym = our_pks.first.to_sym)
|
|
1882
1888
|
code << " self.primary_key = #{pk_sym.inspect}\n"
|
|
1883
1889
|
end
|
|
@@ -2872,7 +2878,7 @@ class Object
|
|
|
2872
2878
|
code << " def #{params_name}\n"
|
|
2873
2879
|
require_txt = model.base_class.name.underscore.tr('/', '_')
|
|
2874
2880
|
is_for_expects = ::ActiveSupport.version >= ::Gem::Version.new('8.0a')
|
|
2875
|
-
permits = model._brick_find_permits(model
|
|
2881
|
+
permits = model._brick_find_permits(model._brick_all_fields(true), is_for_expects)
|
|
2876
2882
|
if is_for_expects
|
|
2877
2883
|
code << " params.expect(#{require_txt}: #{permits})\n"
|
|
2878
2884
|
self.define_method(params_name) do
|
data/lib/brick/rails/engine.rb
CHANGED
|
@@ -705,7 +705,7 @@ window.addEventListener(\"popstate\", linkSchemas);
|
|
|
705
705
|
|
|
706
706
|
if @_brick_model
|
|
707
707
|
pk = @_brick_model._brick_primary_key(::Brick.relations.fetch((table_name = @_brick_model.table_name.split('.').last), nil))
|
|
708
|
-
rn_start = (mn_split =
|
|
708
|
+
rn_start = (mn_split = @_brick_model.base_class.name.split('::')).length > 1 ? -2 : -1
|
|
709
709
|
obj_name = mn_split[rn_start..-1].join.underscore.singularize
|
|
710
710
|
res_name = obj_name.pluralize
|
|
711
711
|
|
|
@@ -1130,7 +1130,7 @@ end
|
|
|
1130
1130
|
%><% end %></h3><%
|
|
1131
1131
|
end %><%
|
|
1132
1132
|
end %>
|
|
1133
|
-
<span class=\"__brick\">(<%= link_to \"See all #\{
|
|
1133
|
+
<span class=\"__brick\">(<%= link_to \"See all #\{base_model.name.split('::').last.pluralize}\", #{@_brick_model._brick_index}_path %>)</span>
|
|
1134
1134
|
<% end %><%
|
|
1135
1135
|
# COLUMN EXCLUSIONS
|
|
1136
1136
|
if @_brick_excl&.present? %>
|
data/lib/brick/version_number.rb
CHANGED