Files
Dalan/app/models/concerns/encryptable.rb
2026-08-13 19:56:46 +03:30

26 lines
613 B
Ruby

# frozen_string_literal: true
module Encryptable
extend ActiveSupport::Concern
class_methods do
def attr_encrypted(*attributes)
attributes.each do |attribute|
define_method("#{attribute}=".to_sym) do |value|
return if value.nil?
self.public_send(
"#{attribute}_encrypted=".to_sym,
EncryptionService.encrypt(value)
)
end
define_method(attribute) do
value = self.public_send("#{attribute}_encrypted".to_sym)
EncryptionService.decrypt(value) if value.present?
end
end
end
end
end