Ruby-on-rails,`rails-generate`,主键不是默认的整数id
我有一个名为'Problem'的模型对象,我希望能够使用URL/problems/problems\u名称调用它的'show'操作 我认为解决这个问题的方法是更改它,使主键不再是默认的整数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
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”。我在这里解释这些:这听起来很棒,如果它碰巧工作的话!更改数据库中的模型听起来像是一件头痛的事。谢谢