Follow-up: Fixed issue #1653: Default value not set for attributes of type input, select, tree_select, richtext, textarea, checkbox.

This commit is contained in:
Thorsten Eckel 2019-09-03 16:06:04 +02:00
parent f79555ecc6
commit c2bdbe62d8
2 changed files with 38 additions and 3 deletions

View file

@ -110,7 +110,7 @@ add a new attribute entry for an object
created_at: '2014-06-04 10:00:00',
updated_at: '2014-06-04 10:00:00',
force: true
force: true,
editable: false,
to_migrate: false,
to_create: false,
@ -329,8 +329,12 @@ possible types
if record[:data_option] != data[:data_option]
# do we need a database migration?
if record[:data_option][:maxlength] && data[:data_option][:maxlength] && record[:data_option][:maxlength].to_s != data[:data_option][:maxlength].to_s
%i[maxlength default].each do |option|
next if record[:data_option][option]&.to_s == data[:data_option][option]&.to_s
data[:to_migrate] = true
break
end
record[:data_option_new] = data[:data_option]
@ -660,7 +664,7 @@ to send no browser reload event, pass false
end
if attribute.data_type == 'select' && attribute.data_option[:options]
attribute.data_option[:historical_options] = attribute.data_option[:options]
attribute.data_option[:historical_options] = Hash(attribute.data_option[:historical_options]).merge(attribute.data_option[:options])
end
data_type = nil

View file

@ -0,0 +1,31 @@
class Issue1653DefaultValueNotSetForSelectInputEtc < ActiveRecord::Migration[5.2]
def change
# return if it's a new setup
return if !Setting.find_by(name: 'system_init_done')
ObjectManager::Attribute.all.each do |attribute|
next if !attribute.data_type.match?(/^input|select|tree_select|richtext|textarea|checkbox$/)
next if attribute.data_option[:default].blank?
ObjectManager::Attribute.add(
object: ObjectLookup.by_id(attribute.object_lookup_id),
name: attribute.name,
display: attribute.display,
data_type: attribute.data_type,
data_option: attribute.data_option,
active: attribute.active,
screens: attribute.screens,
position: attribute.position,
created_by_id: attribute.created_by_id,
updated_by_id: attribute.updated_by_id,
created_at: attribute.created_at,
updated_at: attribute.updated_at,
editable: attribute.editable,
to_migrate: true,
)
end
# ATTENTION: this may take a while
ObjectManager::Attribute.migration_execute
end
end