Class: CanCanCan::Squeel::SqueelAdapter

Inherits:
CanCan::ModelAdapters::AbstractAdapter
  • Object
show all
Defined in:
lib/cancancan/squeel/squeel_adapter.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.for_class?(model_class) ⇒ Boolean

Returns:

  • (Boolean)


2
3
4
# File 'lib/cancancan/squeel/squeel_adapter.rb', line 2

def self.for_class?(model_class)
  model_class <= ActiveRecord::Base
end

.matches_condition?(subject, name, value) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
15
16
17
18
19
20
21
# File 'lib/cancancan/squeel/squeel_adapter.rb', line 12

def self.matches_condition?(subject, name, value)
  # Get the mapping from enum strings to values.
  enum = subject.class.public_send(name.to_s.pluralize)

  # Get the value of the attribute as an integer.
  attribute = enum[subject.public_send(name)]

  # Check to see if the value matches the condition.
  value.is_a?(Enumerable) ? value.include?(attribute) : attribute == value
end

.override_condition_matching?(subject, name, _) ⇒ Boolean

Returns:

  • (Boolean)


6
7
8
9
10
# File 'lib/cancancan/squeel/squeel_adapter.rb', line 6

def self.override_condition_matching?(subject, name, _)
  return false unless subject.class.respond_to?(:defined_enums)

  subject.class.defined_enums.include?(name.to_s)
end

Instance Method Details

#database_recordsObject



23
24
25
26
# File 'lib/cancancan/squeel/squeel_adapter.rb', line 23

def database_records
  # TODO: Handle overridden scopes.
  relation.distinct
end