Module: ActsAsObfuscated::FinderMethods

Defined in:
app/models/concerns/acts_as_obfuscated.rb

Instance Method Summary collapse

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

Returns:

  • (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