【发布时间】:2012-03-28 17:45:14
【问题描述】:
如何在 arel 上调用自定义 sql 函数? 我的意思是:我们可以这样做: arel_table[:c].sum.as('summarizing')
我怎么能这样做: arel_table[:created_at].date_format('%Y-%m-%d').as('something')?
【问题讨论】:
标签: ruby-on-rails-3 arel
如何在 arel 上调用自定义 sql 函数? 我的意思是:我们可以这样做: arel_table[:c].sum.as('summarizing')
我怎么能这样做: arel_table[:created_at].date_format('%Y-%m-%d').as('something')?
【问题讨论】:
标签: ruby-on-rails-3 arel
只有少数几个预定义的函数,例如 sum、count、average、minimum 等。 如果你想使用自定义的东西,我相信你应该使用 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"
希望对你有所帮助,干杯
【讨论】: