所以我有两个模型,State和Acquisition.State has_many收购.我觉得51个记录的自动增量整数主键是相当愚蠢的.所以我将State的模型改为PK(State是两个字母的缩写;我没有在任何地方存储实际的州名:
class State < ActiveRecord::Base
self.primary_key = "state"
has_many :acquisition_histories
end
Run Code Online (Sandbox Code Playgroud)
问题是当我创建我的Acquisition模型时,它创建了外键列state_id作为整数.更具体地说,脚本/生成的迁移确实:
class CreateAcquisitions < ActiveRecord::Migration
def self.up
create_table :acquisitions do |t|
t.date :date
t.string :category
t.text :notes
t.references :state
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
我假设t.references数据类型将其设置为int.问题是我的Acquisition类上的create方法试图将状态缩写放入表获取的state_id字段中(是的,它在数据库上称为state_id,即使它表示:迁移脚本中的状态).该方法不会失败,但它会在state_id字段中输入0并且记录进入以太.