Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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 获取PG::UndefinedFunction:生产中出错_Ruby On Rails_Postgresql - Fatal编程技术网

Ruby on rails 获取PG::UndefinedFunction:生产中出错

Ruby on rails 获取PG::UndefinedFunction:生产中出错,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我有一类客户 class Customer < ActiveRecord::Base enum status: [:unconfirmed] default_scope { order updated_at: :desc } scope :unconfirmed, -> { where(status: 0) } end 有人能帮我找出这里发生了什么吗?要使用enum功能,您必须进行以下操作。但是根据您得到的异常,很明显您将字段status设置为布尔值 您可以检查生产

我有一类客户

class Customer < ActiveRecord::Base
  enum status: [:unconfirmed]

  default_scope { order updated_at: :desc }

  scope :unconfirmed, -> { where(status: 0) }
end

有人能帮我找出这里发生了什么吗?

要使用
enum
功能,您必须进行以下操作。但是根据您得到的异常,很明显您将字段
status
设置为布尔值

您可以检查生产服务器中的列类型。将rails控制台作为rails c产品打开。然后
Customer.columns\u hash['status']。键入
查看列的类型

将新迁移添加到从布尔值到整数,然后应用迁移。 然后您可以执行以下操作:

scope :unconfirmed, -> { where(status: :unconfirmed) }
#or
scope :unconfirmed, -> { where(status: 0) }

但是状态设置为整数,我在迁移中添加了列:customers,:status,:integer,默认值:0file@Kocur4d查看您的生产环境中是否有挂起的迁移。@Kocur4d在以
rails c Production
-->
Customer.columns\u hash['status'打开控制台后,在您的生产环境中执行.type
检查其数据类型。它将类型显示为:boolean,我不知道这是如何发生的。我的迁移文件是最新的,里面是整数。通过psql将其更改为整数的最佳方法是什么?@Kocur4d将编写另一个迁移来更改该值。不要编辑任何现有的迁移文件。只需
状态:0::Boolean
而不是
状态:0
scope :unconfirmed, -> { where(status: :unconfirmed) }
#or
scope :unconfirmed, -> { where(status: 0) }