Module: MaskingField::ClassMethods

Defined in:
lib/masking_field/class_methods.rb

Instance Method Summary collapse

Instance Method Details

#gen_from_integer(gen_length = 10) ⇒ Object



38
39
40
# File 'lib/masking_field/class_methods.rb', line 38

def gen_from_integer(gen_length=10)
  ("A".."Z").to_a.sample(gen_length).join
end

#gen_from_lowercase(gen_length = 10) ⇒ Object



30
31
32
# File 'lib/masking_field/class_methods.rb', line 30

def gen_from_lowercase(gen_length=10)
  ("a".."z").to_a.sample(gen_length).join
end

#gen_from_uppercase(gen_length = 10) ⇒ Object



34
35
36
# File 'lib/masking_field/class_methods.rb', line 34

def gen_from_uppercase(gen_length=10)
  ("A".."Z").to_a.sample(gen_length).join
end

#gen_mask_data(options = {}) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/masking_field/class_methods.rb', line 17

def gen_mask_data(options={})
  #文字列が指定されてたらそのまま使う
  return options[:fixed].to_s if options.present? && options[:fixed].present?
  #指定されてなければ作る
  if options[:gen_type]
    return eval("gen_from_#{options[:gen_type]}(#{options[:gen_length]||10})")
  elsif options[:gen_length].to_i > 0
    return "*" * options[:gen_length].to_i
  else
    return "**********"
  end
end

#masking_to(*mask_columns) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/masking_field/class_methods.rb', line 3

def masking_to(*mask_columns)
  gen_options  = mask_columns.select{|cname| cname.instance_of?(Hash) }.flatten.first
  masking_data = gen_mask_data(gen_options||{})

  class_name = self.to_s.classify
  column_names      = Module.const_get(class_name).columns.map(&:name).map(&:to_sym)
  mask_column_names = mask_columns.select{|cname| cname.instance_of?(Symbol) || cname.instance_of?(String) }
  (column_names & mask_column_names).each do|read_column|
    define_method(read_column) do
      masking_data
    end
  end
end