This rule was introduced in RuboCop 1.53.0. After adding the Style/RedundantRegexpCharacterClass rule in the previous commit, RuboCop started detecting redundant regular expression arguments. Therefore, we apply this rule to remove them and prevent future occurrences.
67 lines
1.9 KiB
Ruby
67 lines
1.9 KiB
Ruby
class SignatureSheet < ApplicationRecord
|
|
belongs_to :signable, polymorphic: true
|
|
belongs_to :author, class_name: "User"
|
|
|
|
VALID_SIGNABLES = %w[Proposal Budget::Investment].freeze
|
|
|
|
has_many :signatures
|
|
|
|
validates :author, presence: true
|
|
validates :signable_type, inclusion: { in: ->(*) { VALID_SIGNABLES }}
|
|
validates :required_fields_to_verify, presence: true
|
|
validates :signable, presence: true
|
|
validate :signable_found
|
|
|
|
def name
|
|
if title.present?
|
|
"#{signable_name} #{signable_id}: #{title}"
|
|
else
|
|
"#{signable_name} #{signable_id}"
|
|
end
|
|
end
|
|
|
|
def signable_name
|
|
I18n.t("activerecord.models.#{signable_type.underscore}", count: 1)
|
|
end
|
|
|
|
def verify_signatures
|
|
parsed_required_fields_to_verify_groups.each do |required_fields_to_verify|
|
|
document_number = required_fields_to_verify[0]
|
|
date_of_birth = parse_date_of_birth(required_fields_to_verify)
|
|
postal_code = parse_postal_code(required_fields_to_verify)
|
|
|
|
signature = signatures.where(document_number: document_number,
|
|
date_of_birth: date_of_birth,
|
|
postal_code: postal_code).first_or_create!
|
|
signature.verify
|
|
end
|
|
update!(processed: true)
|
|
end
|
|
|
|
def parsed_required_fields_to_verify_groups
|
|
required_fields_to_verify.split(";").map { |d| d.gsub(/\s+/, "") }.map { |group| group.split(",") }
|
|
end
|
|
|
|
def signable_found
|
|
errors.add(:signable_id, :not_found) if errors.messages[:signable].present?
|
|
end
|
|
|
|
private
|
|
|
|
def parse_date_of_birth(required_fields_to_verify)
|
|
return required_fields_to_verify[1] if Setting.force_presence_date_of_birth?
|
|
|
|
nil
|
|
end
|
|
|
|
def parse_postal_code(required_fields_to_verify)
|
|
if Setting.force_presence_date_of_birth? && Setting.force_presence_postal_code?
|
|
required_fields_to_verify[2]
|
|
elsif Setting.force_presence_postal_code?
|
|
required_fields_to_verify[1]
|
|
else
|
|
nil
|
|
end
|
|
end
|
|
end
|