ActiveRecord :: Migration - ссылка на таблицу в другой схеме - PullRequest
1 голос
/ 27 сентября 2011

Я использую Ruby и PostgreSQL и создал 3 различные схемы БД: биллинг (для данных, связанных с биллингом), клиент (для данных, связанных с клиентом) и edocs (для данных, связанных с электронными документами).Я не использую Rails, поэтому у меня есть автономный код миграции, подобный следующему:

#migrate.rb

if ARGV[0] =~ /VERSION=\d+/
  version = ARGV[0].split('=')[1].to_i
else
  version = nil
end

ActiveRecord::Base.default_timezone           = :utc
@logger                                       = Logger.new $stderr
ActiveRecord::Base.logger                     = @logger
ActiveSupport::LogSubscriber.colorize_logging = false
@config                                       =     YAML.load_file(File.join(File.dirname(__FILE__), 'database.yml'))

ActiveRecord::Base.establish_connection(@config["edocs"])
ActiveRecord::Migrator.migrate(".", version)

Я уже понял, что мне, вероятно, нужно создать разные каталоги, содержащие миграцию для разных схем, иизменение информации о соединении для каждого migrate.rb.

Но я не уверен, как я собираюсь сделать таблицу, ссылающуюся на другую таблицу, которая находится в другой схеме.Например:

class CreateBillingEventsTable < ActiveRecord::Migration

 def self.up
   create_table :billing_events do |t|
     t.references :customer, :null => false
     t.references :service_type, :null => false
     t.timestamps
   end
   change_table :billing_events do |t|
     t.index [:customer_id, :created_at]
   end
 end

 def self.down
   remove_index :billing_events, :column => [:customer_id, :created_at]
   drop_table :billing_events
 end

end

В приведенном выше примере «customer» и «billing_events» находятся в разных схемах.Как я могу это кодировать?

Спасибо.

...