Rails 3和arel自定义函数

时间:2012-03-12 10:12:13

标签: ruby-on-rails-3 arel

如何在arel上调用自定义sql函数? 我的意思是:我们可以这样做:     arel_table [:C] .sum.as( '总结')

我怎么能这样做:     arel_table [:created_at]。?.date_format( '%Y-%间 - %d')为( '东西')

1 个答案:

答案 0 :(得分:5)

只有很少的函数是预定义的,如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" 

我希望这会以某种方式帮助你,欢呼