相关疑难解决方法(0)

将Rails中的主键更改为字符串

所以我有两个模型,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并且记录进入以太.

ruby activerecord ruby-on-rails

26
推荐指数
5
解决办法
3万
查看次数

标签 统计

activerecord ×1

ruby ×1

ruby-on-rails ×1