0

我有一个名为 service_request 的 Rails 模型,我想添加一个 request_form 对象。我已经在我的模型目录中定义了 RequestForm 类,尽管它仅用作 ServiceRequest 类的“has-A/helper”对象,实际上并不是数据库的一部分。我正在尝试按如下方式添加迁移:

rails generate migration AddRequestFormToServiceRequest request_form:request_form

但我得到了顶级错误:

PG::UndefinedObject: ERROR:  type "request_form" does not exist

我必须在某个特定的地方定义这个类才能工作吗?

谢谢

4

2 回答 2

1

Rails 迁移用于创建和修改数据库的结构。

如果您有一个现有模型 ServiceRequest 并且您想将 RequestForm 与它相关联,您应该使用模型生成器,而不是迁移生成器。

rails g model RequestForm title:string content:text service_request_id:integer

这将创建一个模型RequestForm和一个数据库表request_forms,其中包含对相关 service_request 的外键引用

您还必须在模型中添加关系,例如:

class ServiceRequest < ActiveRecord::Base
   has_many :request_forms
end

class RequestForm < ActiveRecord::Base
  belongs_to :service_request
end

您得到的 PG 错误是因为您试图将 request_form 分配给 Postgres 数据库中不存在的自定义类型。

于 2013-08-21T02:19:51.610 回答
0

这看起来像是模型生成器语法可能无法捕获您想要的内容的情况。尝试:

rails generate migration AddRequestFormToServiceRequest 

然后打开它在编辑器中创建的 AddRequestFormToServiceRequest 迁移文件并添加您需要手动添加的列。

于 2013-08-21T02:17:52.733 回答