Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在迁移中向Rails模型添加自定义对象?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何在迁移中向Rails模型添加自定义对象?

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

我有一个名为service\u request的Rails模型,我想在其中添加一个request\u表单对象。我已经在models目录中定义了RequestForm类,尽管它仅用作ServiceRequest类的“has-a/helper”对象,而不是数据库的一部分。我正在尝试添加一个迁移,如下所示:

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数据库中不存在的自定义类型。

这里对您实际想要做的事情有点困惑。迁移用于修改模型下的数据库表,并且仅限于与数据库数据类型相对应的一组特定类型——您不能创建自己的自定义类型。如果您试图建立一个关联(比如
有一个
/
属于
关联),您可以向数据库添加一个引用,但我甚至不确定这就是您所说的。谢谢。我当时做的有点不对劲,多亏了这一点,我现在可以工作了。