Нет ничего волшебного в столбцах, созданных макросом references
.
references :fo_creator
создает:
- bigint
fo_creator_id
столбец - внешний ключ
Причина, по которой ваша ассоциация не работает, скорее всего, belongs_to :fo_creator
предполагает, что столбец fkey имеет имя :fo_creator_id
.Хотя это можно изменить, указав параметр foreign_key
, я бы сказал, что вы вправе переименовать столбец, чтобы устранить это несоответствие.
Вы можете восстановить существующий столбец, переименовав столбец и добавив внешний ключ:
class ChangeUsersFoCreatorToReference < ActiveRecord::Migration[5.2]
def change
rename_column :users, :fo_creator, :fo_creator_id
change_column :users, :fo_creator_id, :bigint # optional
add_foreign_key :users, :fo_creators
end
end
Если fo_creator_id
является самоссылкой (ссылается на таблицу пользователей), вам нужно создать fk следующим образом:
# from table, to table
add_foreign_key :users, :users, column: :fo_creator_id
См .: