This is a pretty hacky implementation of the feature we needed:
remove the default scope for some queries (e.g. update deleted records)
Code:
Usage
There is an less hacky alternative, but it did not work for us (AR 2.3.2)
This is a pretty hacky implementation of the feature we needed:
remove the default scope for some queries (e.g. update deleted records)
Code:
Usage
There is an less hacky alternative, but it did not work for us (AR 2.3.2)
The One imo not-so-obvious solution is:
And why it works is an exercise for the reader ๐
Update:
A crazy benchmark comparing different versions of power of 2 algorithms by reto
The fastest, still readable versions is:
There are some 40loc nested layout monsters on the interwebs, but it can be as simple as…
Often production and staging share much, so why not use a common file for that…
#config/environments/production.rb and config/environments/staging.rb
eval(File.read("#{File.dirname(__FILE__)}/production_like.rb"))
...environment specific code ...
#config/environments/production_like.rb
config.cache_classes = true
...
the File.read/eval is rather hacky, but works nevertheless ๐
How to get “x[y][z]” out of a hash ?
This made life with our form helpers a lot easier, since they take normal or nested keys <-> name of the input and prefilled value through params.
Any alternative is appreciated, since its pretty complex/hacky, the name is weird too …
(a simple to_query.split(‘=’)).inject… can work too, but would stringify all values and keys)
Usage
{'x'=>{'y'=>{'z'=>1}}}.value_from_nested_key('x[y][z]') == 1
Code
class Hash
# {'x'=>{'y'=>{'z'=>1}}.value_from_nested_key('x[y][z]') => 1
def value_from_nested_key(key)
if key.to_s.include?('[')
match, first, nesting = key.to_s.match(/(.+?)\[(.*)\]/).to_a
value = self[first]
nesting.split('][').each do |part|
return nil unless value.is_a?(Hash)
value = value[part]
end
value
else
self[key]
end
end
end