Ruby-on-rails,`rails-generate`,主键不是默认的整数id

Ruby-on-rails,`rails-generate`,主键不是默认的整数id,ruby-on-rails,primary-key,Ruby On Rails,Primary Key,我有一个名为'Problem'的模型对象,我希望能够使用URL/problems/problems\u名称调用它的'show'操作 我认为解决这个问题的方法是更改它,使主键不再是默认的整数id,而是希望它是一个字母字符串 我试过rails g模型问题\u name:primary\u key问题\u text:text 但是我得到了一个明显的错误,就是有多个主键 有什么想法吗?在生成的迁移中,更改此行: create_table :problems do |t| 为此: create_tabl

我有一个名为'Problem'的模型对象,我希望能够使用URL/problems/problems\u名称调用它的'show'操作

我认为解决这个问题的方法是更改它,使主键不再是默认的整数id,而是希望它是一个字母字符串

我试过
rails g模型问题\u name:primary\u key问题\u text:text
但是我得到了一个明显的错误,就是有多个主键


有什么想法吗?

在生成的迁移中,更改此行:

create_table :problems do |t|
为此:

create_table :problems, :id => false do |t|

但我建议您使用slug作为额外的列,而不是文本主键…

我猜在您的路线中,您有:

 resources :problems
在带有
参考资料:问题的行之前,在routes.rb文件中添加以下内容

 match "problems/:problem_name" => "problems#show"
添加新的显示路线后,在问题控制器中,在显示操作中,而不是在执行

 @problem = Problem.find(params[:id])
你现在用

 @problem = Problem.find_by_name(params[:problem_name])    

这样做,您不必修改数据库

您想要的被称为“虚荣URL”。我在这里解释这些:这听起来很棒,如果它碰巧工作的话!更改数据库中的模型听起来像是一件头痛的事。谢谢