Это что-то вроде хака, но работает следующее:
Arel::Nodes::InfixOperation
предоставляет механизм для генерации последовательности X DISTINCT Y
.Установив значение X
пустым (Arel::Nodes::SqlLiteral.new('')
), мы получим DISTINCT Y
.
Arel::Nodes::NamedFunction.new('GROUP_CONCAT', [
Arel::Nodes::InfixOperation.new('DISTINCT',
Arel::Nodes::SqlLiteral.new(''),
an_arel_table[:a_column]])])
Более поздние версии Arel (помимо Rails 4.2) поддерживают UnaryOperation
, что может разрешить выражение модификатора DISTINCT
как Arel::Nodes::UnaryOperation.new('DISTINCT', an_arel_table[:a_column])
.(Непроверенные)