Skip to content

Instantly share code, notes, and snippets.

@kwatch
Created April 22, 2014 03:28
Show Gist options
  • Save kwatch/11164491 to your computer and use it in GitHub Desktop.
Save kwatch/11164491 to your computer and use it in GitHub Desktop.
require 'erb'
sql_template = <<END
SELECT
FROM users
WHERE true
% if gender
AND gender = :gender
% end
% if age_min
AND age >= :age_min
% end
% if age_max
AND age <= :age_max
% end
ORDER BY id
END
erb = ERB.new(sql_template, nil, '%')
#puts erb.src
### No condition
gender = age_min = age_max = nil
puts erb.result(binding())
# -- result --
# SELECT
# FROM users
# WHERE true
# ORDER BY id
### Gender specified
gender = 'F'
puts erb.result(binding())
# -- result --
# SELECT
# FROM users
# WHERE true
# AND gender = :gender
# ORDER BY id
### All specified
gender = 'F'
age_min = 20
age_max = 30
puts erb.result(binding())
# -- result --
# SELECT
# FROM users
# WHERE true
# AND gender = :gender
# AND age >= :age_min
# AND age <= :age_max
# ORDER BY id
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment