docbrown/app/services/profile_fields/field_definition.rb
Michael Kohl d64943958d
Prepare for profile column drop (#11246)
* Add new display area for settings only fields

* Update CSV importer

* Prepare for dropping profile columns from user

* Update spec

* Don't migrate nil values

* Update spec

* Update forem:setup task
2020-11-09 10:17:39 +07:00

38 lines
877 B
Ruby

module ProfileFields
# This module defines a tiny DSL for declarative profile field seeders.
module FieldDefinition
extend ActiveSupport::Concern
class_methods do
def call
new.add_fields
end
def group(name = nil)
@group = ProfileFieldGroup.find_or_create_by(name: name)
yield if block_given?
@group = nil
end
def fields
@fields ||= []
end
private
def field(label, input_type, placeholder: nil, description: nil, group: @group)
fields << {
label: label,
input_type: input_type,
placeholder_text: placeholder,
description: description,
profile_field_group: group
}.compact
end
end
def add_fields
self.class.fields.each { |field| ProfileField.find_or_create_by(field) }
end
end
end