This processes Array and Hash values and converts those to strings that can be appended to the spreadsheet
34 lines
741 B
Ruby
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
|