Итак, у меня есть две модели: State и Acquisition. Состояние has_many Acquisitions. Я чувствовал себя как автоинкрементный целочисленный первичный ключ для 51 записи, был довольно глупым. Таким образом, я изменил модель для государства как PK (состояние, являющееся аббревиатурой двух букв, я не сохраняю фактическое имя состояния в любом месте:
class State < ActiveRecord::Base
self.primary_key = "state"
has_many :acquisition_histories
end
Проблема заключается в том, что когда я создал свою модель Acquisition, она создала столбец внешнего ключа state_id как целое число. Более конкретно, миграция script/сгенерирована:
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
Я предполагаю, что тип данных t.references устанавливает его в int. Проблема заключается в том, что мой метод создания в моем классе Acquisition пытается поместить аббревиатуру состояния в поле state_id при приобретении таблицы (и да, он называется state_id в базе данных, хотя он говорит: состояние в миграции script). Метод не прерывается, но он помещает 0 в поле state_id, и записи переходят в эфир.