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 を使用しています。

何が起こっているのでしょうか?私が持っていた 1 つのアイデアは、現在は冗長になっている 'id' 列を取り除くことでしたが、今後さらに苦労するのではないかと心配しています。何をアドバイスしますか?

4

0 に答える 0