Rails迁移假设没有关系
问题描述:
我有一个使用User
模型和Venue
模型的Rails 3.1应用程序。这两种模式具有HABTM的关系 - 用户可以管理许多场地,场地可以由许多用户管理。Rails迁移假设没有关系
我希望用户能够选择默认的场地,所以我想一个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宝石自动定义了_id
这就是为什么我从来没有碰到这种行为之前结束列约束!
答
这将有助于查看模型以及诊断此问题。
然而,据说,我认为如果你在这里使用HABTM
协会,这可能是一个好主意,看看有很多直通关系。例如:VenueManagement
这将有你的user_id
和venue_id
。这样,您可以处理关联中的其他属性,如默认标志。
希望有所帮助。
你说得对,有很多通过会更适合在这种情况下。谢谢! – Simon 2012-03-23 15:31:18