Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
module Accessible
extend ActiveSupport::Concern
def accessible?
accessibility_errors.empty?
end
def accessibility_merge(object)
return unless object.respond_to?('accessible?')
object.accessibility_warnings.each do |message|
accessibility_warning message
end
object.accessibility_errors.each do |message|
accessibility_error message
end
end
def accessibility_errors
check_accessibility_if_necessary
@accessibility_errors
end
def accessibility_warnings
check_accessibility_if_necessary
@accessibility_warnings
end
protected
def check_accessibility_if_necessary
unless @accessibility_checked
@accessibility_warnings = []
@accessibility_errors = []
check_accessibility
@accessibility_checked = true
end
end
def accessibility_checked?
@accessibility_checked
end
# Override for some objects
def check_accessibility
end
def accessibility_warning(key)
@accessibility_warnings << key
end
def accessibility_error(key)
@accessibility_errors << key
end
end