1

我有一个使用字符串作为主键的模型:

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”列,现在它是多余的,但我担心以后会有更多的痛苦。你有什么建议?

4

0 回答 0