52 lines
1.6 KiB
Ruby
52 lines
1.6 KiB
Ruby
module IdCard
|
|
class FieldException < ApplicationRecord
|
|
belongs_to :setup
|
|
has_many :field_exception_items, dependent: :destroy
|
|
accepts_nested_attributes_for :field_exception_items, allow_destroy: true, reject_if: :all_blank
|
|
|
|
serialize :exception_values, coder: JSON
|
|
|
|
VALID_TYPES = ['family_id', 'zipcode', 'state'].freeze
|
|
|
|
before_validation :format_exception_values, if: :exception_values_changed?
|
|
|
|
validates :exception_type, inclusion: { in: VALID_TYPES,
|
|
message: "%{value} is not a valid exception type" }
|
|
|
|
|
|
def to_card_attrs
|
|
self.field_exception_items.map(&:card_attrs).reduce({}, :merge)
|
|
end
|
|
|
|
class << self
|
|
|
|
def permitted_params(params)
|
|
params.require(:id_card_setup).permit(
|
|
field_exceptions_attributes: [
|
|
:exception_type,
|
|
:exception_values,
|
|
:_destroy,
|
|
field_exception_items_attributes: [
|
|
:field_name,
|
|
:field_value,
|
|
:network_logo_id,
|
|
:provider_section_id,
|
|
:_destroy
|
|
]
|
|
]
|
|
)
|
|
end
|
|
|
|
end
|
|
|
|
private
|
|
|
|
def format_exception_values
|
|
if self.exception_values.is_a?(String)
|
|
self.exception_values = self.exception_values.split(",").map(&:strip)
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|