Rails:使字符串成为Rails 3中的主键

时间:2012-09-08 03:15:36

标签: ruby-on-rails ruby-on-rails-3

我正在尝试将一个Sinatra应用程序(使用书中的食谱)重新创建到Rails中。 Sinatra应用程序使用data_mapper,您可以使用以下方法将字符串设置为主键:key =>真

 include DataMapper::Resource
  property  :identifier,  String, :key => true
  property  :created_at,  DateTime 

我不确定如何在Rails 3中执行此操作。您能解释如何将标识符字符串设置为主键吗?

另一个问题可能是我正在使用sqlite3进行开发,但最终将使用'pg'在Heroku上进行托管。如果这太复杂了,请假装我只使用sqlite3

2 个答案:

答案 0 :(得分:4)

on rails 3.2+你还需要传递id: false,类似这样的

create_table :products, id: false do |t|
  t.string :identifier, :primary_key => true
end

答案 1 :(得分:2)

Rails会在数据库中找到具有主键的列并自动使用它。您只需将其置于迁移中:

create_table :products do |t|
  t.string :identifier, :primary_key => true
end

ActiveRecord会自动将id指向此列。

http://guides.rubyonrails.org/migrations.html的更多信息。