Rails 3 и arel пользовательские функции - PullRequest
1 голос
/ 12 марта 2012

Как я могу вызвать пользовательскую функцию sql на arel? Что я имею в виду: мы можем сделать так: arel_table [: с] .sum.as ( 'подведение')

Как я мог это сделать: arel_table [: created_at].? .date_format ( '% Y-% m-% d'), как ( 'что-то')

1 Ответ

5 голосов
/ 13 сентября 2012

есть только несколько предопределенных функций, таких как сумма, число, среднее, минимальное и т. Д. Если вы хотите использовать что-то свое, я считаю, что вы должны использовать Arel :: Nodes :: NamedFunction и функции, специфичные для базы данных.Например, для PostgreSQL это может выглядеть примерно так:

t = Country.arel_table
func = Arel::Nodes::NamedFunction.new("to_char", [ t[:created_at], "YYYY-MM-DD"]).as("pretty_date")
query = t.project(func)

query.to_sql # => SELECT to_char("countries"."created_at", 'YYYY-MM-DD') AS pretty_date FROM "countries" 

Надеюсь, это вам как-то поможет, ура

...