나는 쿼리 생성을 위해 Arels
을 사용하고 있습니다. 이 쿼리에서는 generate_series
함수를 사용합니다. 여기 내 코드는 다음과 같습니다.레일즈 ActiveRecord Arels : 지원되지 않는 인수 유형 : 문자열. 대신 Arel 노드를 구축하십시오
def generate_series
Arel::Nodes::NamedFunction.new('GENERATE_SERIES', [start_date, end_day, '1 day'])
end
def start_date
Arel::Nodes::SqlLiteral.new(<<-SQL
CASE WHEN DATE_PART('hour', NOW() AT TIME ZONE 'ICT') < #{Time.now - 3days} THEN (CURRENT_DATE - INTERVAL '14 days') ELSE (CURRENT_DATE - INTERVAL '13 days') END
SQL
)
end
def end_date
Arel::Nodes::SqlLiteral.new(<<-SQL
CASE WHEN DATE_PART('hour', NOW() AT TIME ZONE 'ICT') < #{Time.now} THEN (CURRENT_DATE - INTERVAL '1 day') ELSE CURRENT_DATE END
SQL
)
end
generate_series.to_sql
으로 테스트를 시도합니다.
Arel::Visitors::UnsupportedVisitError: Unsupported argument type: String. Construct an Arel node instead.
내가 테스트를 위해 짧은 내 코드를 시도 :
def generate_series
Arel::Nodes::NamedFunction.new('GENERATE_SERIES', ['19/11/2012', '20/11/2012', '1 day'])
end
문제는 동일 나는 예외를 만난다. 이 문제를 어떻게 해결할 수 있는지 말해주십시오.