This allows a submission to get a dynamic value like for example the current time
27 lines
619 B
Ruby
27 lines
619 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)
|
|
if value.to_s.downcase == 'tinyforms_now'
|
|
Time.now.utc.to_formatted_s(:rfc822)
|
|
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
|