У меня есть приложение Rails 3.1 с моделью User
и моделью Venue
. Эти две модели имеют отношение HABTM — пользователь может управлять многими площадками, а площадка может управляться многими пользователями.
Я бы хотел, чтобы пользователи могли выбирать место по умолчанию, поэтому я пытаюсь добавить атрибут default_venue_id
к User
со следующей миграцией:
class AddDefaultVenueIdToUser < ActiveRecord::Migration
def self.up
add_column :users, :default_venue_id, :integer
end
def self.down
remove_column :users, :default_venue_id
end
end
Проблема в том, что когда я запускаю эту миграцию для моей базы данных PostgreSQL, предполагается, что default_venue_id
является внешним ключом для связи с несуществующей таблицей default_venues
, и выдает следующую ошибку:
PGError: ERROR: relation "default_venues" does not exist
: ALTER TABLE "users" ADD FOREIGN KEY ("default_venue_id") REFERENCES "default_venues" ("id")
Должен ли я что-то делать, чтобы сообщить базе данных, что я не пытаюсь создать отношения, или я делаю это неправильно?
Изменить: я только что понял, что другой разработчик, работавший над проектом, добавил schema_plus gem, который автоматически определяет ограничения для столбцов, оканчивающихся на _id
Это объясняет, почему я никогда раньше не сталкивался с таким поведением!