Class: MultiClient::Client

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/multi_client/client.rb

Direct Known Subclasses

Client

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.currentObject



23
24
25
# File 'app/models/multi_client/client.rb', line 23

def self.current
  enabled.where(id: Thread.current[:client_id]).first
end

.current_idObject



19
20
21
# File 'app/models/multi_client/client.rb', line 19

def self.current_id
  Thread.current[:client_id]
end

.current_id=(id) ⇒ Object



15
16
17
# File 'app/models/multi_client/client.rb', line 15

def self.current_id=(id)
  Thread.current[:client_id] = id
end

.masterObject



11
12
13
# File 'app/models/multi_client/client.rb', line 11

def self.master
  where(identifier: Configuration.master_client_identifier).first
end

.master?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'app/models/multi_client/client.rb', line 57

def self.master?
  !!(current && current.identifier == Configuration.master_client_identifier)
end

.set_current_by_identifier(identifier) ⇒ Object



31
32
33
# File 'app/models/multi_client/client.rb', line 31

def self.set_current_by_identifier(identifier)
  self.current_id = where(identifier: identifier).first.try(:id)
end

.set_current_by_subdomain(subdomain) ⇒ Object



35
36
37
# File 'app/models/multi_client/client.rb', line 35

def self.set_current_by_subdomain(subdomain)
  self.current_id = where(subdomain: subdomain).first.try(:id)
end

.set_current_to_masterObject



61
62
63
# File 'app/models/multi_client/client.rb', line 61

def self.set_current_to_master
  set_current_by_identifier(Configuration.master_client_identifier)
end

.unset_currentObject



39
40
41
# File 'app/models/multi_client/client.rb', line 39

def self.unset_current
  self.current_id = nil
end

.with_client(client, &block) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'app/models/multi_client/client.rb', line 43

def self.with_client(client, &block)
  original_id = current_id
  begin
    self.current_id = client.id
    Rails.logger.info "Temporarily set client id to #{client.id}"
    block.call
  rescue
    raise
  ensure
    Rails.logger.info "Restored client id to #{original_id}"
    self.current_id = original_id
  end
end

Instance Method Details

#humanObject



27
28
29
# File 'app/models/multi_client/client.rb', line 27

def human
  identifier
end