我有一个使用字符串作为主键的模型:
class Employee < ActiveRecord::Base
self.primary_key = "employment_id"
end
该表还包含带有唯一性约束的 Rails 默认“id”字段。
当我在本地添加新员工时,一切正常,Rails 会自动生成一个新的唯一 ID。
但是,当我在 Heroku Postgres 上运行它时,它似乎将 'id' 和 'employment_id' 视为同一个字段。我试图通过手动设置一个唯一的 id 来解决这个问题,但仍然得到这种行为:
Employee.new do |s|
max_id = Employee.maximum(:id)
puts max_id.to_s # => 1803
s.employment_id = "fred_01"
s.id = max_id + 1
puts employment_id.to_s # => 1804
end
我在本地运行 postgres 9.1.3(而 Heroku 在 9.1.4 上)。我在 Rails 3.2.3 上。
知道会发生什么吗?我的一个想法是去掉“id”列,现在它是多余的,但我担心以后会有更多的痛苦。你有什么建议?