Class: CanCan::ModelAdapters::ActiveRecord3Adapter
Class Method Summary
collapse
#conditions, #database_records, #joins, #tableized_conditions
adapter_class, #database_records, find, inherited, #initialize, matches_conditions_hash?, override_conditions_hash_matching?
Class Method Details
.for_class?(model_class) ⇒ Boolean
5
6
7
|
# File 'lib/cancan/model_adapters/active_record_3_adapter.rb', line 5
def self.for_class?(model_class)
model_class <= ActiveRecord::Base
end
|
.matches_condition?(subject, name, value) ⇒ Boolean
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/cancan/model_adapters/active_record_3_adapter.rb', line 13
def self.matches_condition?(subject, name, value)
subject_value = subject.send(name.column)
if name.method.to_s.ends_with? "_any"
value.any? { |v| meta_where_match? subject_value, name.method.to_s.sub("_any", ""), v }
elsif name.method.to_s.ends_with? "_all"
value.all? { |v| meta_where_match? subject_value, name.method.to_s.sub("_all", ""), v }
else
meta_where_match? subject_value, name.method, value
end
end
|
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/cancan/model_adapters/active_record_3_adapter.rb', line 24
def self.meta_where_match?(subject_value, method, value)
case method.to_sym
when :eq then subject_value == value
when :not_eq then subject_value != value
when :in then value.include?(subject_value)
when :not_in then !value.include?(subject_value)
when :lt then subject_value < value
when :lteq then subject_value <= value
when :gt then subject_value > value
when :gteq then subject_value >= value
when :matches then subject_value =~ Regexp.new("^" + Regexp.escape(value).gsub("%", ".*") + "$", true)
when :does_not_match then !meta_where_match?(subject_value, :matches, value)
else raise NotImplemented, "The #{method} MetaWhere condition is not supported."
end
end
|
.override_condition_matching?(subject, name, value) ⇒ Boolean
9
10
11
|
# File 'lib/cancan/model_adapters/active_record_3_adapter.rb', line 9
def self.override_condition_matching?(subject, name, value)
name.kind_of?(MetaWhere::Column) if defined? MetaWhere
end
|