Tôi đã gặp vấn đề tương tự và chưa bao giờ nghĩ ra bất cứ thứ gì được tích hợp sẵn trong Rails. Vì vậy, tôi đã viết phương pháp nhỏ này.
# 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
Tôi nghĩ ai đó thực sự nên viết một số loại plugin trình trợ giúp SQL có thể tự động định dạng các biểu thức SQL đơn giản dựa trên việc sử dụng các hàm hoặc toán tử chính xác cho bộ điều hợp hiện tại. Có lẽ tôi sẽ tự viết một cái.