Как я могу вызвать пользовательскую функцию sql на arel? Что я имею в виду: мы можем сделать так: arel_table[:c].sum.as('summarizing')
Как я мог это сделать: arel_table[:created_at].date_format('%Y-%m-%d').as('что-то')?
Как я могу вызвать пользовательскую функцию sql на arel? Что я имею в виду: мы можем сделать так: arel_table[:c].sum.as('summarizing')
Как я мог это сделать: arel_table[:created_at].date_format('%Y-%m-%d').as('что-то')?
есть только несколько предопределенных функций, таких как сумма, количество, среднее, минимум и т. д. Если вы хотите использовать что-то нестандартное, я считаю, что вам следует использовать 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"
Я надеюсь, что это поможет вам как-то, ура