Я прилагаю все усилия для сгибания моего мозга вокруг ареала и алгебры отношений позади него, но как представить a SELECT DISTINCT
последовательно уклоняется от моего понимания. Может любой объяснять как ареалу:
SELECT DISTINCT title FROM posts;
Большое спасибо!
Post.select ('DISTINCT title')
Обновление 1:
На момент публикации это было недоступно в Arel. В наши дни ActiveRecord :: QueryMethods имеет метод uniq
( http://apidock.com/rails/ActiveRecord/QueryMethods/uniq ), поэтому вам нужно:
Post.select(:title).uniq
Обновление 2: Похоже, что Арел теперь поддерживает такое поведение. У @maerics есть правильный ответ. Я бы удалил это, если бы это не был принятый ответ.
Предыдущий ответ - это путь Rails, нет? Но не путь Arel.
Это работает для arel 1.x:
posts = Table(:posts)
posts.project(Arel::Distinct.new(posts[:title]))
Я предполагаю, что есть другой "более правильный" способ сделать это через API, но я еще не выяснил этого.