首页 > 解决方案 > Rails 应用程序中的自定义迁移失败

问题描述

在为我的 Rails 应用程序( https://github.com/mitchellhenke/sequel-pg-trgm)安装 pg-trgm gem 时,我正在尝试遵循这个超级简单的 README 指南

不幸的是,当我收到错误消息时,我一定做错了:

== 20180531122444 AddPgTrgmExtensionToDb: migrating ===========================
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

undefined method `plugin' for #<Class:0x007fdb68c1bad8>

我想这是关于plugin我试图在我的模型中使用这个迁移,但我不知道为什么这是一个问题。

我的迁移文件:

class AddPgTrgmExtensionToDb < ActiveRecord::Migration[5.2]
  def change
  Card.migration do
  up do
    extension :pg_trgm
    add_pg_trgm(:foods, :name)
  end

  down do
    extension :pg_trgm
    drop_pg_trgm(:foods, :name)
  end
  end
  end
end

我的模型文件:

class Card < ApplicationRecord
  plugin :pg_trgm
end

有任何想法吗?

标签: ruby-on-railsruby

解决方案


您所指的gem是Sequel而不是Rails AR,所以这不起作用。

execute您可以使用Migrations 中的方法执行自定义 SQL 。那应该允许您创建那些 trm 索引。请注意,如果您使用executethen 您可能希望将 Rails 记录您的模式的方式schema.rbstructure.sql. 有关详细信息,请参阅文档

另一个解决方案是@sparkAP评论中提到的pg_search gem


推荐阅读