module ActionCable::Connection::Identification

Public Instance Methods

connection_identifier() click to toggle source

Return a single connection identifier that combines the value of all the registered identifiers into a single gid.

# File lib/action_cable/connection/identification.rb, line 26
def connection_identifier
  unless defined? @connection_identifier
    @connection_identifier = connection_gid identifiers.map { |id| instance_variable_get("@#{id}") }.compact
  end

  @connection_identifier
end
identified_by(*identifiers) click to toggle source

Mark a key as being a connection identifier index that can then be used to find the specific connection again later. Common identifiers are current_user and current_account, but could be anything, really.

Note that anything marked as an identifier will automatically create a delegate by the same name on any channel instances created off the connection.

# File lib/action_cable/connection/identification.rb, line 19
def identified_by(*identifiers)
  Array(identifiers).each { |identifier| attr_accessor identifier }
  self.identifiers += identifiers
end

Private Instance Methods

connection_gid(ids) click to toggle source
# File lib/action_cable/connection/identification.rb, line 35
def connection_gid(ids)
  ids.map do |o|
    if o.respond_to? :to_gid_param
      o.to_gid_param
    else
      o.to_s
    end
  end.sort.join(":")
end