tinyforms/app/models/submission.rb
Michael Bumann c964c15196 Form value handling for Arrays and Hashes
This processes Array and Hash values and converts those to strings that
can be appended to the spreadsheet
2020-04-08 00:52:00 +02:00

34 lines
741 B
Ruby

class Submission < ApplicationRecord
belongs_to :form
after_create :append_to_spreadsheet
validates_presence_of :data
def data=(value)
sanitized_data = {}
value.each do |key, value|
sanitized_data[key] = submission_value(value)
end
write_attribute(:data, sanitized_data)
end
def submission_value(value)
case value
when Array
value.join(', ')
when Hash
JSON.dump(value)
when 'tinyforms_now'
Time.now.utc.to_formatted_s(:rfc822)
when ActionDispatch::Http::UploadedFile
''
else
value.to_s
end
end
def append_to_spreadsheet
result = form.append(data)
update_column(:appended_at, Time.current) if result.updates.updated_rows > 0
end
end