【发布时间】:2012-03-23 14:49:09
【问题描述】:
我有一个带有 User 模型和 Venue 模型的 Rails 3.1 应用程序。这两种模型具有 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 结尾的列定义约束
这解释了为什么我以前从未遇到过这种行为!
【问题讨论】:
标签: ruby-on-rails database ruby-on-rails-3 postgresql rails-migrations