Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Concatenazione di stringhe SQL indipendente dal database in Rails

Ho avuto lo stesso problema e non ho mai inventato nulla che fosse integrato in Rails. Quindi ho scritto questo piccolo metodo.

# Symbols should be used for field names, everything else will be quoted as a string
def db_concat(*args)

  adapter = configurations[RAILS_ENV]['adapter'].to_sym
  args.map!{ |arg| arg.class==Symbol ? arg.to_s : "'#{arg}'" }

  case adapter
    when :mysql
      "CONCAT(#{args.join(',')})"
    when :sqlserver
      args.join('+')
    else
      args.join('||')
  end

end

Sto pensando che qualcuno dovrebbe davvero scrivere una sorta di plug-in di supporto SQL in grado di formattare automaticamente semplici espressioni SQL basate sull'utilizzo delle funzioni o degli operatori corretti per l'adattatore corrente. Forse ne scriverò uno io stesso.