Skip to content

Commit 9e528f1

Browse files
committed
[BREAKING CHANGE: Convert empty string into nil for string-ish fields. Closes #2099
Setting empty string is unique-index unfriendly, and people should expect clearing a string-ish field makes the column null.
1 parent 0e8e9e4 commit 9e528f1

15 files changed

Lines changed: 81 additions & 6 deletions

File tree

lib/rails_admin/config/fields/types/color.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
require 'rails_admin/config/fields/base'
2+
require 'rails_admin/config/fields/types/string'
23

34
module RailsAdmin
45
module Config
56
module Fields
67
module Types
7-
class Color < RailsAdmin::Config::Fields::Base
8+
class Color < RailsAdmin::Config::Fields::Types::String
89
RailsAdmin::Config::Fields::Types.register(self)
910

11+
register_instance_option :html_attributes do
12+
{
13+
required: required?,
14+
}
15+
end
16+
1017
register_instance_option :pretty_value do
1118
bindings[:view].content_tag :strong, (value.presence || ' - '), style: "color: #{color}"
1219
end

lib/rails_admin/config/fields/types/hidden.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ class Hidden < RailsAdmin::Config::Fields::Base
2222
def generic_help
2323
false
2424
end
25+
26+
def parse_input(params)
27+
params[name] = params[name].presence if params.key?(name)
28+
end
2529
end
2630
end
2731
end

lib/rails_admin/config/fields/types/string.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ def generic_help
3838
text
3939
end
4040

41+
def parse_input(params)
42+
params[name] = params[name].presence if params.key?(name)
43+
end
44+
4145
register_instance_option :partial do
4246
:form_field
4347
end

lib/rails_admin/config/fields/types/text.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ class Text < RailsAdmin::Config::Fields::Base
1616
}
1717
end
1818

19+
def parse_input(params)
20+
params[name] = params[name].presence if params.key?(name)
21+
end
22+
1923
register_instance_option :partial do
2024
:form_text
2125
end

spec/rails_admin/config/fields/types/action_text_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@
22

33
describe RailsAdmin::Config::Fields::Types::ActionText do
44
it_behaves_like 'a generic field type', :action_text_field
5+
6+
it_behaves_like 'a string-ish field type', :action_text_field
57
end if defined?(ActionText)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
require 'spec_helper'
2+
3+
describe RailsAdmin::Config::Fields::Types::ActiveRecordEnum, active_record: true do
4+
it_behaves_like 'a generic field type', :string_enum_field
5+
end

spec/rails_admin/config/fields/types/ck_editor_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@
22

33
describe RailsAdmin::Config::Fields::Types::CKEditor do
44
it_behaves_like 'a generic field type', :text_field, :ck_editor
5+
6+
it_behaves_like 'a string-ish field type', :text_field, :ck_editor
57
end

spec/rails_admin/config/fields/types/code_mirror_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@
22

33
describe RailsAdmin::Config::Fields::Types::CodeMirror do
44
it_behaves_like 'a generic field type', :text_field, :code_mirror
5+
6+
it_behaves_like 'a string-ish field type', :text_field, :code_mirror
57
end

spec/rails_admin/config/fields/types/color_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@
22

33
describe RailsAdmin::Config::Fields::Types::Color do
44
it_behaves_like 'a generic field type', :string_field, :color
5+
6+
it_behaves_like 'a string-ish field type', :string_field, :color
57
end

spec/rails_admin/config/fields/types/hidden_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@
22

33
describe RailsAdmin::Config::Fields::Types::Hidden do
44
it_behaves_like 'a generic field type', :integer_field, :hidden
5+
6+
it_behaves_like 'a string-ish field type', :string_field, :hidden
57
end

0 commit comments

Comments
 (0)