Mysql
 sql >> Database >  >> RDS >> Mysql

Perché questo :id in Rails non funziona con Postgresql ma funziona con MySQL?

Rails chiamerà automaticamente to_i sul tuo parametro per alcuni metodi, principalmente quelli in cui è previsto un numero intero come parametro, come Listing.find(params[:id]) .

Tuttavia, per altri tipi di metodi di ricerca che possono accettare stringhe come parametri, dovrai chiamare manualmente to_i

Listing.find_by_id(params[:id].to_i)
Listing.find(:conditions => ["id = ?", params[:id].to_i])

Il motivo per cui non hai problemi con MySQL è che MySQL fa quello che in effetti sarebbe un to_i alla fine (cioè non è un problema di adattatore di database, ma piuttosto una funzionalità del server di database effettivo).