Module: ObscuredId::HasObscuredId::ClassMethods
- Defined in:
- lib/obscured_id/obscured_id.rb
Overview
Specify this has
extension if you want to model a to have an obscured id. This requires a key column for the obscured id, which is obscured_id
by default.
Class Method Summary collapse
-
.set_obscured_ids ⇒ Object
Reset all obscured ids.
Instance Method Summary collapse
-
#has_obscured_id(options = {}) ⇒ Object
Configuration options are:.
Class Method Details
.set_obscured_ids ⇒ Object
Reset all obscured ids
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/obscured_id/obscured_id.rb', line 39 def self.set_obscured_ids success = 0 fail = 0 begin self.find_each do |record| begin record.set_obscured_id success += 1 rescue fail += 1 end end rescue false end [success, fail] end |
Instance Method Details
#has_obscured_id(options = {}) ⇒ Object
Configuration options are:
-
field
- specifies the column name to use for the obscured id. Default isobscured_id
. -
secret_token
- salt for the SHA1 digest. Default isobscured_id_secret_token
configuration option. -
auto
- Automatically update record with obscured id after save. Default it true.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/obscured_id/obscured_id.rb', line 18 def has_obscured_id( = {}) self.obscured_id_secret_token = [:secret_token] || ActiveRecord::Base.obscured_id_secret_token self.obscured_id_field = [:field] || ActiveRecord::Base.obscured_id_field self.record_obscured_ids = .has_key?(:auto) ? [:auto] : true # Define the instance method set an obscured id for this model define_method :set_obscured_id do update_column( self.obscured_id_field, OpenSSL::HMAC.hexdigest( OpenSSL::Digest.const_get(:SHA1).new, self.obscured_id_secret_token.to_s, "#{id}#{created_at.to_i}" ) ) end define_method :safe_set_obscured_id do set_obscured_id if ActiveRecord::Base.record_obscured_ids && self.record_obscured_ids end # Call set_obscured_id after create. after_create :safe_set_obscured_id # Reset all obscured ids def self.set_obscured_ids success = 0 fail = 0 begin self.find_each do |record| begin record.set_obscured_id success += 1 rescue fail += 1 end end rescue false end [success, fail] end # set_obscure_ids end |