我有一个名为service_request的Rails模型,我想添加一个request_form对象。我在models目录中定义了RequestForm类,尽管它仅用作ServiceRequest类的“has-A / helper”对象,而不是数据库的实际部分。我正在尝试添加迁移,如下所示:
rails generate migration AddRequestFormToServiceRequest request_form:request_form
但是我得到了顶级错误:
PG::UndefinedObject: ERROR: type "request_form" does not exist
我是否必须在某个特定的位置定义此类才能工作?
由于
答案 0 :(得分: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数据库中不存在的自定义类型。
答案 1 :(得分:0)
这类似于模型生成器语法可能无法捕获您想要的内容的情况。尝试:
rails generate migration AddRequestFormToServiceRequest
然后打开它在编辑器中创建的AddRequestFormToServiceRequest迁移文件,并添加手动添加的列。