method

connected_to

Importance_2
v6.0.0 - Show latest stable - 0 notes - Class: ConnectionHandling
connected_to(database: nil, role: nil, &blk) public

Connects to a database or role (ex writing, reading, or another custom role) for the duration of the block.

If a role is passed, Active Record will look up the connection based on the requested role:

ActiveRecord::Base.connected_to(role: :writing) do
  Dog.create! # creates dog using dog writing connection
end

ActiveRecord::Base.connected_to(role: :reading) do
  Dog.create! # throws exception because we're on a replica
end

ActiveRecord::Base.connected_to(role: :unknown_role) do
  # raises exception due to non-existent role
end

For cases where you may want to connect to a database outside of the model, you can use connected_to with a database argument. The database argument expects a symbol that corresponds to the database key in your config.

ActiveRecord::Base.connected_to(database: :animals_slow_replica) do
  Dog.run_a_long_query # runs a long query while connected to the +animals_slow_replica+
end

This will connect to a new database for the queries inside the block. By default the `:writing` role will be used since all connections must be assigned a role. If you would like to use a different role you can pass a hash to database:

ActiveRecord::Base.connected_to(database: { readonly_slow: :animals_slow_replica }) do
  # runs a long query while connected to the +animals_slow_replica+ using the readonly_slow role.
  Dog.run_a_long_query
end

When using the database key a new connection will be established every time.

Show source
Register or log in to add new notes.