我在Rails应用程序中有路由:
resources :products do
get 'preview', to: 'products#preview', on: :member
#member do
# get 'preview'
#end
end
定义路线' / products /:id / preview'。
Products.id在数据库中很重要。
当我打开网址' / products / 15 / preview'它工作正常。 但是当我用big id = 67500打开它时,它大于整数= 65535的最大值:
http://localhost:3000/products/67500/preview
它显示404错误。这里id = 67500,大于整数(65535),路线不起作用。
如何让Rails识别BIGINT类型的id?
答案 0 :(得分:1)
Rajarshi Das
是对的 - 这不是路由问题,而是数据库。
<强> DB 强>
系统的 routes 部分只是将所需的参数发送给您的控制器。它与您发送的号码大小无关 - 它是“愚蠢的”。
问题似乎与您的数据库有关 - 无法查找您请求的id
。
要解决此问题,您需要将id
列更改为accommodate larger numbers:
$ rails g migration ChangeIDProducts
#db/migrate/change_id_products______.rb
class ChangeIdProducts < ActiveRecord::Migration
def change
change_column :products, :id, limit: 20
end
end
$ rake db:migrate