Rails的迁移假设一个关系,其中有没有

我有一个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宝石自动定义在截至列约束_id

这解释了为什么我以前从来没有碰到这种行为!

--------------解决方案-------------

这将是有帮助的,看的模式,以及以诊断此问题。

但是他这样说,我认为,如果你正在使用HABTM协会在这里可能是看一看一个有许多通过关系是个好主意。 例如: VenueManagement这将对您user_idvenue_id 。 你可以额外处理这样的属性上它是有道理的,像一个默认的标志的关联。

希望有所帮助。

由于Rails的似乎拿起标签的_id一部分,并试图将其链接到一个表,轻松解决了这个是惯例说,与_id链接到一个表中的字段以不同的方式尝试将其命名。

其中的一个例子可以是:default_id_for_venue ,或者只是:defualt_venue

分类:Ruby on Rails的 时间:2013-04-08 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.217 (s). 10 q(s)