1

我一直试图找到详细的 Arel 文档,但徒劳无功。最后,我尝试深入研究源代码并发现

以下作品(注意最后的 to_sql ):

Arel::Nodes::NamedFunction.new('to_char', Audit.arel_table[:created_at], 'dd-mm-yyyy').to_sql 

并且,以下工作:

tzdate = Arel::Nodes::InfixOperation.new('at time zone', Arel::Nodes::InfixOperation.new('at time zone', Audits.arel_table[:created_at], 'gmt'), Time.zone.tzinfo.name)

由于以下原因,以下内容不起作用(请注意最后的 to_sql)TypeError: Cannot visit Arel::Nodes::InfixOperation

Arel::Nodes::NamedFunction.new('to_char', [tzdate, 'dd-mm-yyyy']).to_sql

谁能告诉我这里发生了什么?

4

1 回答 1

0

这里有两个问题:

  • 您需要用Arel.new('dd-mm-yyyy')(产生一个Arel::Nodes::SqlLiteral)来包装日期格式字符串。
  • 时区字符串需要被引用(例如Arel::Nodes::Quoted.new('UTC'))。见https://github.com/rails/arel/issues/323
于 2018-07-17T21:37:41.893 回答