Handling multi-connection

Often you will need to connect to two or more database, due to legacy code.

Clear offers multi-connections possibility, and your model can live in a specific database.

If not multiple connection are set, clear use default connection as living place for the models.

Setup the multiple connections

  Clear::SQL.init("default", "postgres://[USER]:[PASSWORD]@[HOST]/[DATABASE]")
  Clear::SQL.add_connection("secondary", "postgres://[USER]:[PASSWORD]@[HOST]/[DATABASE]")

You can also use hash notation:

  Clear::SQL.init(
    "default" => "postgres://[USER]:[PASSWORD]@[HOST]/[DATABASE]",
    "legacy" => "postgres://[USER]:[PASSWORD]@[HOST]/[DATABASE]"
  )

Setup model connection

You can then just change the class property connection in your model definition:

class OldUser
  self.table = "users"
  self.connection = "legacy"
end

Migrations always occurs to the database under default connection

Other connection with SQL Builder

In low-level API, you can call use_connection to force a request to be called on a specific collection:

Clear::SQL.select.use_connection("legacy").from("users").fetch{ |u| ... }

Last updated