gpt4 book ai didi

mysql - 为什么这个 :id in Rails not work with Postgresql but it does work with MySQL?

转载 作者:数据小太阳 更新时间:2023-10-29 08:41:12 24 4
gpt4 key购买 nike

我将此方法用于 Rails 中搜索引擎友好的 URL - http://jroller.com/obie/entry/seo_optimization_of_urls_in

我的模型看起来像这样。

class Listing < ActiveRecord::Base
def to_param
"#{id}-#{title.parameterize}"
end
end

这适用于 MySQL 但不适用于 Postgresql。

这是我得到的错误:

ActiveRecord::StatementInvalid (PGError: ERROR: invalid input syntax for integer: "16- college-station-apartments": SELECT * FROM "floorplans"WHERE ("floorplans"."listing_id"= E'16-college-station-apartments') ORDER BY beds ASC, baths ASC, footage ASC, price ASC:

ActiveRecord 没有在为 Postgresql 查找时执行 .to_i 吗?

最佳答案

Rails 会自动为一些 方法在您的参数上调用to_i,主要是那些希望将整数作为参数的方法,例如Listing.find(params[ :id]).

但是,对于其他类型的可以接受字符串作为参数的搜索方法,您需要手动调用to_i

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

您对 MySQL 没有问题的原因是 MySQL 在其末端执行了实际上是 to_i 的操作(即,这不是数据库适配器问题,而是实际的数据库服务器)。

关于mysql - 为什么这个 :id in Rails not work with Postgresql but it does work with MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5122762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com