我正在尝试将一个Sinatra应用程序(使用书中的食谱)重新创建到Rails中。 Sinatra应用程序使用data_mapper,您可以使用以下方法将字符串设置为主键:key =>真
include DataMapper::Resource
property :identifier, String, :key => true
property :created_at, DateTime
我不确定如何在Rails 3中执行此操作。您能解释如何将标识符字符串设置为主键吗?
另一个问题可能是我正在使用sqlite3进行开发,但最终将使用'pg'在Heroku上进行托管。如果这太复杂了,请假装我只使用sqlite3
答案 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
指向此列。