Class: Permission

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/private_person/models/permission.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.blockedObject



30
31
32
# File 'lib/private_person/models/permission.rb', line 30

def self.blocked
  where('NOT(relationship_type IN (?))', self.permissible_types)
end

.by_permissible(permissible) ⇒ Object



12
13
14
# File 'lib/private_person/models/permission.rb', line 12

def self.by_permissible(permissible)
  where("permissible_type = ? AND permissible_id = ?", permissible.class.name, permissible.id)
end

.by_permissor(permissor) ⇒ Object



8
9
10
# File 'lib/private_person/models/permission.rb', line 8

def self.by_permissor(permissor)
  where("permissor_type = ? AND permissor_id = ?", permissor.class.name, permissor.id)
end

.by_relationship_type(relationship_type) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/private_person/models/permission.rb', line 20

def self.by_relationship_type(relationship_type)
  if relationship_type == 'public' or relationship_type.nil?
    return where("relationship_type = 'public'")
  end
  if(self.permissible_types.include? relationship_type)
    return where("relationship_type = ? OR relationship_type = 'public'", relationship_type)
  end
  return where(0)
end

.by_wildcard(permissible_type) ⇒ Object



16
17
18
# File 'lib/private_person/models/permission.rb', line 16

def self.by_wildcard(permissible_type)
  where(:permissible_type => permissible_type, :permissible_id => nil)
end

.legitimateObject



34
35
36
# File 'lib/private_person/models/permission.rb', line 34

def self.legitimate
  where('relationship_type IN (?)', self.permissible_types)
end

.permissible_typesObject



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/private_person/models/permission.rb', line 38

def self.permissible_types
  permissible_types = ['public']
  for record in self.group('permissor_type').group('permissor_id')
    permissor = record.permissor_type.constantize.find(record.permissor_id)
    unless permissor.nil?
      for method in permissor.class.of
        permissible_types << method.to_s
      end
    end
  end
  permissible_types.compact
end

Instance Method Details

#existing_typesObject



51
52
53
54
55
56
57
# File 'lib/private_person/models/permission.rb', line 51

def existing_types
  existing_types = ['public']
  for method in permissor.class.of
    existing_types << method.to_s
  end
  existing_types
end