Ruby on rails 如何在迁移中向Rails模型添加自定义对象?
我有一个名为service\u request的Rails模型,我想在其中添加一个request\u表单对象。我已经在models目录中定义了RequestForm类,尽管它仅用作ServiceRequest类的“has-a/helper”对象,而不是数据库的一部分。我正在尝试添加一个迁移,如下所示:Ruby on rails 如何在迁移中向Rails模型添加自定义对象?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个名为service\u request的Rails模型,我想在其中添加一个request\u表单对象。我已经在models目录中定义了RequestForm类,尽管它仅用作ServiceRequest类的“has-a/helper”对象,而不是数据库的一部分。我正在尝试添加一个迁移,如下所示: rails generate migration AddRequestFormToServiceRequest request_form:request_form 但我得到了一个顶级错误: PG
rails generate migration AddRequestFormToServiceRequest request_form:request_form
但我得到了一个顶级错误:
PG::UndefinedObject: ERROR: type "request_form" does not exist
我必须在某个特定的地方定义这个类才能工作吗
谢谢这看起来像是模型生成器语法可能无法捕获您想要的内容。尝试:
rails generate migration AddRequestFormToServiceRequest
然后在编辑器中打开AddRequestFormToServiceRequest迁移文件,添加需要手动添加的列。Rails迁移用于创建和修改数据库的结构 如果您有一个现有的模型ServiceRequest,并且希望将RequestForm与之关联,那么应该使用模型生成器,而不是迁移生成器
rails g model RequestForm title:string content:text service_request_id:integer
这将创建一个模型RequestForm
和一个数据库表request\u forms
,其中包含对相关服务请求的外键引用
您还必须在模型中添加关系,如:
class ServiceRequest < ActiveRecord::Base
has_many :request_forms
end
class RequestForm < ActiveRecord::Base
belongs_to :service_request
end
class-ServiceRequest
出现PG错误的原因是,您试图将请求表单分配给Postgres数据库中不存在的自定义类型。这里对您实际想要做的事情有点困惑。迁移用于修改模型下的数据库表,并且仅限于与数据库数据类型相对应的一组特定类型——您不能创建自己的自定义类型。如果您试图建立一个关联(比如
有一个/属于关联),您可以向数据库添加一个引用,但我甚至不确定这就是您所说的。谢谢。我当时做的有点不对劲,多亏了这一点,我现在可以工作了。