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) }