class CanCan::ModelAdapters::DataMapperAdapter

Public Class Methods

find(model_class, id) click to toggle source
# File lib/cancan/model_adapters/data_mapper_adapter.rb, line 8
def self.find(model_class, id)
  model_class.get(id)
end
for_class?(model_class) click to toggle source
# File lib/cancan/model_adapters/data_mapper_adapter.rb, line 4
def self.for_class?(model_class)
  model_class <= DataMapper::Resource
end
matches_conditions_hash?(subject, conditions) click to toggle source
# File lib/cancan/model_adapters/data_mapper_adapter.rb, line 16
def self.matches_conditions_hash?(subject, conditions)
  collection = DataMapper::Collection.new(subject.query, [ subject ])
  !!collection.first(conditions)
end
override_conditions_hash_matching?(subject, conditions) click to toggle source
# File lib/cancan/model_adapters/data_mapper_adapter.rb, line 12
def self.override_conditions_hash_matching?(subject, conditions)
  conditions.any? { |k,v| !k.kind_of?(Symbol) }
end

Public Instance Methods

database_records() click to toggle source
# File lib/cancan/model_adapters/data_mapper_adapter.rb, line 21
def database_records
  scope = @model_class.all(:conditions => ["0 = 1"])
  cans, cannots = @rules.partition { |r| r.base_behavior }
  return scope if cans.empty?
  # apply unions first, then differences. this mean cannot overrides can
  cans.each    { |r| scope += @model_class.all(:conditions => r.conditions) }
  cannots.each { |r| scope -= @model_class.all(:conditions => r.conditions) }
  scope
end