Initial commit
This commit is contained in:
30
app/models/concerns/signable.rb
Normal file
30
app/models/concerns/signable.rb
Normal file
@@ -0,0 +1,30 @@
|
||||
module Signable
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
include ActiveStorageSupport::SupportForBase64
|
||||
|
||||
has_one_base64_attached :signature
|
||||
|
||||
scope :having_a_signature, -> { left_joins(:signature_attachment).group(:id).having("COUNT(active_storage_attachments) > 0") }
|
||||
scope :having_no_signature, -> { left_joins(:signature_attachment).group(:id).having("COUNT(active_storage_attachments) = 0") }
|
||||
|
||||
# Create some descriptive aliases for scopes above relating to native vs. non-native
|
||||
scope :native, -> { having_a_signature }
|
||||
scope :non_native, -> { having_no_signature }
|
||||
end
|
||||
|
||||
def native?
|
||||
signature.attached?
|
||||
end
|
||||
|
||||
def signature_base64
|
||||
return nil
|
||||
end
|
||||
|
||||
def signature_base64=(data_uri)
|
||||
return if data_uri.blank?
|
||||
|
||||
signature.attach(data: data_uri, filename: "signature.png", content_type: "image/png", identify: "false")
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user