I'm writing this post for two reasons:
- For some reason, I couldn't find a lot of information on ActiveRecord and
SELECT DISTINCT()
. - I'm hoping some Ruby / ActiveRecord guru will stumble across this and provide a better solution.
Recently, I was working on a project written in Ruby with ActiveRecord that required me to draw a list of host names from a database and perform some actions on them. The actions aren't really important here. What I had a hard time finding was the ActiveRecord way of performing a SELECT DISTINCT()
SQL query. My search came up empty, so I was forced to use the find_by_sql()
method below. Obviously, I've changed the code to make it generic and not violate any non-disclosure agreements I might have.
records = Class.find_by_sql(["SELECT DISTINCT(hostname) FROM table"])
This code works just fine, but it lacks a certain elegance. One thing that really bothers me is that I have to hardcode the table name into this line of code. If we make a change to the table name some time down the road, this line will have to be found and modified. Blech.