Skip to content

Instantly share code, notes, and snippets.

@johnpmitsch
Created June 1, 2015 20:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save johnpmitsch/7ecb08588dc181b8d29e to your computer and use it in GitHub Desktop.
Save johnpmitsch/7ecb08588dc181b8d29e to your computer and use it in GitHub Desktop.
def self.find_by_version(_key, operator, value)
if ['>', '<', '=', '<=', '>=', '^', 'IN', 'NOT IN'].include?(operator) && value.to_f >= 1
major, minor = value.split(".")
case
when /[<>]/ =~ operator
minor ||= 0
query = where("major #{operator} :major OR (major = :major AND minor #{operator} :minor)", :major => major, :minor => minor)
when minor.nil?
query = where("major #{operator} (:major)", :major => major)
else
query = where("major #{operator} (:major) and minor #{operator} (:minor)", :major => major, :minor => minor)
end
_, conditions = query.to_sql.split("WHERE")
end
{ :conditions => conditions || ""}
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment