Пользовательская миграция не выполняется в приложении Rails - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь следовать этому очень простому руководству README при установке гема pg-trgm для моего приложения Rails (https://github.com/mitchellhenke/sequel-pg-trgm)

К сожалению, я должен что-то делать неправильно, когда получаю сообщение об ошибке:

== 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

Есть идеи?

1 Ответ

0 голосов
/ 31 мая 2018

gem , на который вы ссылаетесь, предназначен для сиквела , а не для Rails AR, поэтому это не будет работать.

Вы можете выполнитьпользовательский SQL с использованием метода execute в ваших миграциях.Это должно позволить вам создавать эти индексы trm.Обратите внимание, что если вы используете execute, вы можете изменить способ, которым Rails записывает вашу схему, с schema.rb на structure.sql.Подробнее см. Документацию 1014 *

Другим решением является pg_search gem , упомянутый в комментариях @ sparkAP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...