module EasyCompliance::Ref

allows identifying records after submission

Public Instance Methods

app_name() click to toggle source
# File lib/easy_compliance/ref.rb, line 31
def app_name
  EasyCompliance.app_name or raise Error, 'must set app_name'
end
for(record_class:, record_id:) click to toggle source

@return [ String ]

# File lib/easy_compliance/ref.rb, line 14
def for(record_class:, record_id:)
  [app_name, record_class, record_id].join('#')
end
for_record(record) click to toggle source

@return [ String ]

# File lib/easy_compliance/ref.rb, line 9
def for_record(record)
  self.for(record_class: record.class.name, record_id: record.id)
end
look_up(ref) click to toggle source

Converts a previously created Ref string back into a record.

@return [ ActiveRecord::Base | NilClass ]

# File lib/easy_compliance/ref.rb, line 21
def look_up(ref)
  app_name, record_class, record_id = ref.split('#')
  app_name == self.app_name or raise Error, "Ref `#{ref}` is from wrong app"
  begin
    record_class.constantize.find_by(id: record_id)
  rescue NameError, NoMethodError => e
    raise Error, "Ref `#{ref}` not supported: #{e.message}"
  end
end