Module: ActsAsObfuscated::FinderMethods
- Defined in:
- app/models/concerns/acts_as_obfuscated.rb
Instance Method Summary collapse
- #deobfuscate_arel!(node) ⇒ Object
- #exists?(*args) ⇒ Boolean
- #find(*args) ⇒ Object
- #find_by(*args) ⇒ Object
- #find_by_id(*args) ⇒ Object
- #where(*args) ⇒ Object
Instance Method Details
#deobfuscate_arel!(node) ⇒ Object
162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'app/models/concerns/acts_as_obfuscated.rb', line 162 def deobfuscate_arel!(node) nodes = node.kind_of?(Array) ? node : [node] nodes.each do |node| if node.respond_to?(:children) deobfuscate_arel!(node.children) elsif node.respond_to?(:expr) deobfuscate_arel!(node.expr) elsif node.respond_to?(:left) next unless (d = deobfuscator(node.left.name)) node.right = d.call(node.right) unless (node.right.kind_of?(String) && node.right.include?('$')) end end end |
#exists?(*args) ⇒ Boolean
130 131 132 |
# File 'app/models/concerns/acts_as_obfuscated.rb', line 130 def exists?(*args) super(deobfuscate(args.first)) end |
#find(*args) ⇒ Object
122 123 124 125 126 127 128 |
# File 'app/models/concerns/acts_as_obfuscated.rb', line 122 def find(*args) if @_effective_obfuscation_reloading || (respond_to?(:klass) && klass.try(:instance_variable_get, :@_effective_obfuscation_reloading)) return find_by_id(args.first) end super(deobfuscate(args.first, false)) end |
#find_by(*args) ⇒ Object
138 139 140 141 142 143 144 145 146 147 |
# File 'app/models/concerns/acts_as_obfuscated.rb', line 138 def find_by(*args) if args.first.kind_of?(Hash) args.first.each do |left, right| next unless (d = deobfuscator(left)) args.first[left] = d.call(right) end end super(*args) end |
#find_by_id(*args) ⇒ Object
134 135 136 |
# File 'app/models/concerns/acts_as_obfuscated.rb', line 134 def find_by_id(*args) super(deobfuscate(args.first)) end |
#where(*args) ⇒ Object
149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'app/models/concerns/acts_as_obfuscated.rb', line 149 def where(*args) if args.first.kind_of?(Hash) args.first.each do |left, right| next unless (d = deobfuscator(left)) args.first[left] = d.call(right) end elsif args.first.class.parent == Arel::Nodes deobfuscate_arel!(args.first) end super(*args) end |