->(column) ::Arel::Nodes::SqlLiteral.new

Cześć,

Słabo znam składnię Arel. :slight_frown:

Mam funkcję, która w swojej klasycznej formie wygląda tak:

def filter_custom_column_condition
  ->(column) { ::Arel::Nodes::SqlLiteral.new(column.field.to_s).matches("#{ column.search.value }%") }
end

Ponieważ pragnę zrealizować warunek odwołujący się do innej tabeli zrobiłem tak:

def filter_custom_column_condition
  ->(column) {
      sql_str = "(customers.id IN (SELECT projects.customer_id FROM projects WHERE projects.number ilike '%#{column}%'))";
      ::Arel::Nodes::SqlLiteral.new("#{sql_str}") 
      }
end

To działa(! :slight_smile:) ale nie podoba mi się ten kod.

Czy ktoś może zapisać mi ten warunek używając tylko składni Arel::Nodes::..… ?