Added validator for extra profile field values with empty name (#33421)
This commit is contained in:
parent
9b82bedc6f
commit
3bdfa3eb4c
4 changed files with 35 additions and 1 deletions
|
@ -118,6 +118,7 @@ class Account < ApplicationRecord
|
|||
validates :display_name, length: { maximum: DISPLAY_NAME_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_display_name? }
|
||||
validates :note, note_length: { maximum: NOTE_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_note? }
|
||||
validates :fields, length: { maximum: DEFAULT_FIELDS_SIZE }, if: -> { local? && will_save_change_to_fields? }
|
||||
validates_with EmptyProfileFieldNamesValidator, if: -> { local? && will_save_change_to_fields? }
|
||||
with_options on: :create do
|
||||
validates :uri, absence: true, if: :local?
|
||||
validates :inbox_url, absence: true, if: :local?
|
||||
|
@ -300,7 +301,7 @@ class Account < ApplicationRecord
|
|||
|
||||
if attributes.is_a?(Hash)
|
||||
attributes.each_value do |attr|
|
||||
next if attr[:name].blank?
|
||||
next if attr[:name].blank? && attr[:value].blank?
|
||||
|
||||
previous = old_fields.find { |item| item['value'] == attr[:value] }
|
||||
|
||||
|
|
15
app/validators/empty_profile_field_names_validator.rb
Normal file
15
app/validators/empty_profile_field_names_validator.rb
Normal file
|
@ -0,0 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class EmptyProfileFieldNamesValidator < ActiveModel::Validator
|
||||
def validate(account)
|
||||
return if account.fields.empty?
|
||||
|
||||
account.errors.add(:fields, :fields_with_values_missing_labels) if fields_with_values_missing_names?(account)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def fields_with_values_missing_names?(account)
|
||||
account.fields.any? { |field| field.name.blank? && field.value.present? }
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue