Ruby on rails,`rails generate`,primary_key不是默认的整数id

时间:2011-12-12 22:06:36

标签: ruby-on-rails primary-key

我有一个名为“问题”的模型对象,我希望能够使用URL / problems / PROBLEM_NAME调用其“show”操作。

我认为解决这个问题的方法是更改​​它,以便primary_key不再是默认的整数id,而是希望它是一串字母。

我试过rails g model problem problem_name:primary_key problem_text:text 但是我得到了关于拥有多个主键的明显错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我猜您的路线中有:

 resources :problems

在使用resources :problems的行之前,在您的routes.rb文件中添加此

 match "problems/:problem_name" => "problems#show"

添加新的节目路线后,在您的问题控制器中,在show动作中,而不是

 @problem = Problem.find(params[:id])

你现在使用

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

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

答案 1 :(得分:0)

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

create_table :problems do |t|

到此:

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

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