如何让SQLLite进行Postgres特定的迁移?

时间:2018-01-28 22:48:46

标签: postgresql sqlite unit-testing ruby-on-rails-5 minitest

我正在运行Rails 5和Postgres 9.4。我有这个Postgres迁移,所以我可以快速搜索...

function IdMixin<E extends IdEntity>()  {
    return function <B extends BrokerType<E>>(Base: B){
        class AsIdBroker extends Base {
            constructor(...args: any[]) {
                super(...args);
            }
            getEntity(id: number): E | null {
                return null;
            }
        }
        return AsIdBroker;
    }
}
//Usage
class MyTaggedBroker extends IdMixin<TaggedEntity>()(TaggedBroker) {
    // Same as before
}

但是,当我尝试运行单元测试(使用minitest)时,SQLLite不喜欢我的Postgres特定语法并抛出以下错误

class AddTrgmIndex < ActiveRecord::Migration[5.0]
  def change
    execute <<-SQL
      CREATE INDEX trgm_idx_person_name ON people USING gin (name gin_trgm_ops);
    SQL
  end
end

有没有办法告诉SqlLite忽略迁移,还是有其他方法可以重写它,这会使两个数据库都满意?

1 个答案:

答案 0 :(得分:1)

要回答您的问题,您可以使用以下方法检查数据库类型:

ActiveRecord::Base.connection.instance_values["config"][:adapter]

您可以使用它来有条件地运行迁移。

但我同意Taryn的评论