Class: CanCan::ModelAdapters::AbstractAdapter
- Inherits:
-
Object
- Object
- CanCan::ModelAdapters::AbstractAdapter
- Defined in:
- lib/cancan/model_adapters/abstract_adapter.rb
Direct Known Subclasses
ActiveRecordAdapter, DataMapperAdapter, DefaultAdapter, MongoidAdapter
Class Method Summary collapse
- .adapter_class(model_class) ⇒ Object
-
.find(model_class, id) ⇒ Object
Override if you need custom find behavior.
-
.for_class?(member_class) ⇒ Boolean
Used to determine if the given adapter should be used for the passed in class.
- .inherited(subclass) ⇒ Object
-
.matches_condition?(subject, name, value) ⇒ Boolean
Override if override_condition_matching? returns true.
-
.matches_conditions_hash?(subject, conditions) ⇒ Boolean
Override if override_conditions_hash_matching? returns true.
-
.override_condition_matching?(subject, name, value) ⇒ Boolean
Used to determine if this model adapter will override the matching behavior for a specific condition.
-
.override_conditions_hash_matching?(subject, conditions) ⇒ Boolean
Used to determine if this model adapter will override the matching behavior for a hash of conditions.
Instance Method Summary collapse
- #database_records ⇒ Object
-
#initialize(model_class, rules) ⇒ AbstractAdapter
constructor
A new instance of AbstractAdapter.
Constructor Details
#initialize(model_class, rules) ⇒ AbstractAdapter
Returns a new instance of AbstractAdapter.
45 46 47 48 |
# File 'lib/cancan/model_adapters/abstract_adapter.rb', line 45 def initialize(model_class, rules) @model_class = model_class @rules = rules end |
Class Method Details
.adapter_class(model_class) ⇒ Object
9 10 11 |
# 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) ⇒ Object
Override if you need custom find behavior
19 20 21 |
# 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) ⇒ Boolean
Used to determine if the given adapter should be used for the passed in class.
14 15 16 |
# File 'lib/cancan/model_adapters/abstract_adapter.rb', line 14 def self.for_class?(member_class) false # override in subclass end |
.inherited(subclass) ⇒ Object
4 5 6 7 |
# File 'lib/cancan/model_adapters/abstract_adapter.rb', line 4 def self.inherited(subclass) @subclasses ||= [] @subclasses << subclass end |
.matches_condition?(subject, name, value) ⇒ Boolean
Override if override_condition_matching? returns true
41 42 43 |
# 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) ⇒ Boolean
Override if override_conditions_hash_matching? returns true
30 31 32 |
# 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 |
.override_condition_matching?(subject, name, value) ⇒ Boolean
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
36 37 38 |
# 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) ⇒ Boolean
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
25 26 27 |
# File 'lib/cancan/model_adapters/abstract_adapter.rb', line 25 def self.override_conditions_hash_matching?(subject, conditions) false end |
Instance Method Details
#database_records ⇒ Object
50 51 52 53 |
# 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 |