class CanCan::ModelAdapters::AbstractAdapter

Public Class Methods

adapter_class(model_class) click to toggle source
# File lib/cancan/model_adapters/abstract_adapter.rb, line 9
def self.adapter_class(model_class)
  @subclasses.detect { |subclass| subclass.for_class?(model_class) } || DefaultAdapter
end
find(model_class, id) click to toggle source

Override if you need custom find behavior

# File lib/cancan/model_adapters/abstract_adapter.rb, line 19
def self.find(model_class, id)
  model_class.find(id)
end
for_class?(member_class) click to toggle source

Used to determine if the given adapter should be used for the passed in class.

# File lib/cancan/model_adapters/abstract_adapter.rb, line 14
def self.for_class?(member_class)
  false # override in subclass
end
inherited(subclass) click to toggle source
# File lib/cancan/model_adapters/abstract_adapter.rb, line 4
def self.inherited(subclass)
  @subclasses ||= []
  @subclasses << subclass
end
matches_condition?(subject, name, value) click to toggle source

Override if override_condition_matching? returns true

# File lib/cancan/model_adapters/abstract_adapter.rb, line 41
def self.matches_condition?(subject, name, value)
  raise NotImplemented, "This model adapter does not support matching on a specific condition."
end
matches_conditions_hash?(subject, conditions) click to toggle source

Override if override_conditions_hash_matching? returns true

# File lib/cancan/model_adapters/abstract_adapter.rb, line 30
def self.matches_conditions_hash?(subject, conditions)
  raise NotImplemented, "This model adapter does not support matching on a conditions hash."
end
new(model_class, rules) click to toggle source
# File lib/cancan/model_adapters/abstract_adapter.rb, line 45
def initialize(model_class, rules)
  @model_class = model_class
  @rules = rules
end
override_condition_matching?(subject, name, value) click to toggle source

Used to determine if this model adapter will override the matching behavior for a specific condition. If this returns true then matches_condition? will be called. See Rule#matches_conditions_hash

# File lib/cancan/model_adapters/abstract_adapter.rb, line 36
def self.override_condition_matching?(subject, name, value)
  false
end
override_conditions_hash_matching?(subject, conditions) click to toggle source

Used to determine if this model adapter will override the matching behavior for a hash of conditions. If this returns true then matches_conditions_hash? will be called. See Rule#matches_conditions_hash

# File lib/cancan/model_adapters/abstract_adapter.rb, line 25
def self.override_conditions_hash_matching?(subject, conditions)
  false
end

Public Instance Methods

database_records() click to toggle source
# File lib/cancan/model_adapters/abstract_adapter.rb, line 50
def database_records
  # This should be overridden in a subclass to return records which match @rules
  raise NotImplemented, "This model adapter does not support fetching records from the database."
end