Skip to content

Commit

Permalink
attr_masked: Provide options for specifying :column_name for an attri…
Browse files Browse the repository at this point in the history
…bute
  • Loading branch information
ribose-jeffreylau committed Oct 28, 2013
1 parent a644a17 commit 82cab53
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions lib/indigo/attr_masked.rb
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ def attr_masked(*attributes)
:if => true,
:unless => false,
:encode => false,
:column_name => nil,
:marshal => false,
:marshaler => Marshal,
:dump_method => 'dump',
Expand Down Expand Up @@ -241,16 +242,20 @@ def mask!
return if self.class.masked_attributes.length < 1

sql_snippet = self.class.masked_attributes.map do |masked_attr|
# puts masked_attr
masked_attr[0]
end.inject({}) do |acc, attr_name|
attr_name, column_name = masked_attr[0], (masked_attr[1][:column_name] || masked_attr[0])
end.inject({}) do |acc, (attr_name, column_name)|

# build a map of { attr_name => masked_value }
masked_value = self.mask(attr_name)
acc.merge(
attr_name => masked_value
[attr_name, column_name] => masked_value
)
end.inject([]) do |acc, (attr_name, masked_value)|
acc << "#{attr_name}=#{ActiveRecord::Base.sanitize(masked_value)}"
end.inject([]) do |acc, ((attr_name, column_name), masked_value)|
self.send("#{attr_name}=", masked_value)
final_masked_value = self.send(column_name)
acc << "#{column_name}=#{ActiveRecord::Base.sanitize(final_masked_value)}"
end.join(', ')

sql = <<-EOQ
Expand Down

0 comments on commit 82cab53

Please sign in to comment.