brick 1.0.249 → 1.0.251
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 +33 -27
- data/lib/brick/rails/engine.rb +5 -5
- data/lib/brick/rails/form_tags.rb +4 -4
- 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: 7f3523afa6d066b034bb48321fee476541b520db03a6414a6bbb3ce7eb6fef68
|
|
4
|
+
data.tar.gz: 2a7db114267da1de863e4d225c09983585e04674a92c4d3c7d21c2eadf9ce1d8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ca9c7a8a90956bbfce0af44e21bace777bc988653173c854e59b783c05d7016ab0407015367ea7e5b075f6ab88416e3caf8825653f208d781c3ff86e82baf610
|
|
7
|
+
data.tar.gz: c93ba7596bfe01d8850178a2334d952fff29e2e4b76e0d5db22a081a8d05151cd64287caa81769a6401fd8f31c3bd9fad6bd50ca4c2081fa245376ef0c591254
|
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
|
|
@@ -441,7 +447,7 @@ module ActiveRecord
|
|
|
441
447
|
CGI.escapeHTML(assoc_name)
|
|
442
448
|
end
|
|
443
449
|
model_path = ::Rails.application.routes.url_helpers.send("#{_brick_index || table_name}_path".to_sym)
|
|
444
|
-
model_path << "?#{self.inheritance_column}=#{self.name}" if self != base_class
|
|
450
|
+
model_path << "__?#{self.inheritance_column}=#{self.name}" if self != base_class
|
|
445
451
|
av_class = Class.new.extend(ActionView::Helpers::UrlHelper)
|
|
446
452
|
av_class.extend(ActionView::Helpers::TagHelper) if ActionView.version < ::Gem::Version.new('7')
|
|
447
453
|
link = av_class.link_to(assoc_html_name ? name : assoc_name, model_path)
|
|
@@ -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.any? { |dp| self <= dp }
|
|
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
|
|
|
@@ -1098,7 +1098,7 @@ if (window.brickFontFamily) {
|
|
|
1098
1098
|
until this_model == base_model do
|
|
1099
1099
|
this_model = this_model.superclass
|
|
1100
1100
|
path = send(\"#\{this_model._brick_index}_path\")
|
|
1101
|
-
path << \"
|
|
1101
|
+
path << \"?__#\{base_model.inheritance_column}=#\{this_model.name}\" unless this_model == base_model
|
|
1102
1102
|
parent_links << link_to(this_model.name, path)
|
|
1103
1103
|
end
|
|
1104
1104
|
\"<tr><td colspan=\\\"#\{td_count}\\\">Parent: #\{parent_links.join(' ')}</tr>\".html_safe
|
|
@@ -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? %>
|
|
@@ -1406,7 +1406,7 @@ s << \"\\n <br>\\n\"
|
|
|
1406
1406
|
#{(inh_col = @_brick_model.inheritance_column).present? &&
|
|
1407
1407
|
" if obj.respond_to?(:#{inh_col}) && (model_name = @#{obj_name}.#{inh_col}) &&
|
|
1408
1408
|
!model_name.is_a?(Numeric) && model_name != base_model.name
|
|
1409
|
-
see_all_path << \"
|
|
1409
|
+
see_all_path << \"?__#{inh_col}=#\{model_name}\"
|
|
1410
1410
|
end
|
|
1411
1411
|
model_name = base_model.name if model_name.is_a?(Numeric)"}
|
|
1412
1412
|
model_name = nil if model_name == ''
|
|
@@ -1647,7 +1647,7 @@ flatpickr(\".timepicker\", {enableTime: true, noCalendar: true});
|
|
|
1647
1647
|
var mermaidCode;
|
|
1648
1648
|
var cbs = {<%= callbacks.map do |k, v|
|
|
1649
1649
|
path = send(\"#\{v._brick_index}_path\".to_sym)
|
|
1650
|
-
path << \"
|
|
1650
|
+
path << \"?__#\{v.base_class.inheritance_column}=#\{v.name}\" unless v == v.base_class
|
|
1651
1651
|
\"#\{k}: \\\"#\{path}\\\"\"
|
|
1652
1652
|
end.join(', ').html_safe %>};
|
|
1653
1653
|
if (imgErd) imgErd.addEventListener(\"click\", showErd);
|
|
@@ -807,7 +807,7 @@ function onImagesLoaded(event) {
|
|
|
807
807
|
klass, sti_type, rel_name = ::Brick.ctrl_to_klass(controller_path)
|
|
808
808
|
if klass
|
|
809
809
|
type_col = klass.inheritance_column # Usually 'type'
|
|
810
|
-
filter_parts << "#{type_col}=#{sti_type}" if sti_type && klass.column_names.include?(type_col)
|
|
810
|
+
filter_parts << "__#{type_col}=#{sti_type}" if sti_type && klass.column_names.include?(type_col)
|
|
811
811
|
path_params = request.path_parameters
|
|
812
812
|
pk = (klass.primary_key || ActiveRecord::Base.primary_key).to_sym
|
|
813
813
|
if ((id = (path_params[pk] || path_params[:id] || path_params["#{klass.name.underscore}_id".to_sym])) && (obj = klass.find_by(pk => id))) ||
|
|
@@ -829,7 +829,7 @@ function onImagesLoaded(event) {
|
|
|
829
829
|
.pluck(assoc_klass.primary_key).first)
|
|
830
830
|
foreign_id = new_id
|
|
831
831
|
end
|
|
832
|
-
filter_parts << "#{path_param}=#{foreign_id}"
|
|
832
|
+
filter_parts << "__#{path_param}=#{foreign_id}"
|
|
833
833
|
end
|
|
834
834
|
klass
|
|
835
835
|
end
|
|
@@ -839,7 +839,7 @@ function onImagesLoaded(event) {
|
|
|
839
839
|
if klass_or_obj
|
|
840
840
|
if klass_or_obj.is_a?(ActiveRecord::Relation)
|
|
841
841
|
klass_or_obj.where_values_hash.each do |whr|
|
|
842
|
-
filter_parts << "#{whr.first}=#{whr.last}" if whr.last && !whr.last.is_a?(Array)
|
|
842
|
+
filter_parts << "__#{whr.first}=#{whr.last}" if whr.last && !whr.last.is_a?(Array)
|
|
843
843
|
end
|
|
844
844
|
klass_or_obj = klass_or_obj.klass
|
|
845
845
|
end
|
|
@@ -849,7 +849,7 @@ function onImagesLoaded(event) {
|
|
|
849
849
|
if klass_or_obj.is_a?(Class) && klass_or_obj <= ActiveRecord::Base
|
|
850
850
|
type_col = klass_or_obj.inheritance_column
|
|
851
851
|
if klass_or_obj.column_names.include?(type_col) && klass_or_obj.name != klass_or_obj.base_class.name
|
|
852
|
-
filter_parts << "#{type_col}=#{klass_or_obj.name}"
|
|
852
|
+
filter_parts << "__#{type_col}=#{klass_or_obj.name}"
|
|
853
853
|
end
|
|
854
854
|
end
|
|
855
855
|
filter = "?#{filter_parts.join('&')}" if filter_parts.present?
|
data/lib/brick/version_number.rb
CHANGED