Rails在路由

时间:2015-11-05 10:40:01

标签: ruby-on-rails routes

我在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?

1 个答案:

答案 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