如何检查Ruby on Rails迁移中是否存在模式

时间:2017-05-26 13:28:16

标签: ruby-on-rails postgresql

我使用Rails 5.0.2,Postgresql作为数据库,Heroku Connect使用salesforce同步数据。

在创建应用程序表时,我已经有了公共模式,但Heroku Connect在相同的数据库salesforce表上写入。我需要在salesforce架构表中添加一个字段。

我发现方法schema_exists? (https://apidock.com/rails/ActiveRecord/ConnectionAdapters/PostgreSQL/SchemaStatements/schema_exists%3F)但我不知道如何实现它,我是RoR的新手。

这是我的迁移代码:

class CreateSchema < ActiveRecord::Migration[5.0]
      def change
    if !schema_exists?('salesforce')
      execute "CREATE SCHEMA salesforce"
    end
    if !table_exists?('salesforce.ontap__order__c')
      create_table 'salesforce.ontap__order__c'
    end
    add_column :'salesforce.ontap__order__c', :currencyisomode, :string
    if !table_exists?('salesforce.ontap__order_item__c')
      create_table 'salesforce.ontap__order_item__c'
    end
    add_column :'salesforce.ontap__order_item__c', :currencyisomode, :string
  end
end

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我不确定您遇到了什么问题,但这应该有效:

import numpy as np
import matplotlib.pyplot as plt
np.random.seed = 42

x = np.linspace(0.1,0.9,50)
y = x%1
x += np.sin(2*x%1)
y = y%0.2


plt.scatter(x,y)
plt.savefig("test.pdf")

我已将更改方法重构为2种方法向上(在运行rake db:migrate时执行)和向下(在执行时执行你运行rake db:rollback)。