#ruby #rails #postgresql
Type casting in PostgreSQL using Arel
January 23, 2024
//1 min read
Arel
is a relational algebra library for Ruby, utilized under the hood by the ActiveRecord library in the Ruby on Rails framework for generating SQL queries. It proves invaluable when constructing more advanced clauses without resorting to direct SQL.
The NamedFunction
helper provided by Arel enables the invocation of built-in SQL functions. Recently, I found myself needing to use it to convert (cast) a model attribute to a different type for a specific query.
Below is an example of using NamedFunction
with the as
method to convert the created_at
attribute into a DATE
type for a direct comparison:
created_at = User.arel_table[:created_at]
clause = Arel::Nodes::NamedFunction.new('CAST', [
created_at.as(Arel::Nodes::SqlLiteral.new('DATE'))
])
User.where(clause.eq('2024-01-23'))