Module: ActivemodelFlags::HasFlags::LocalInstanceMethods
- Defined in:
- lib/activemodel_flags/has_flags.rb
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method) ⇒ Object
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
# File 'lib/activemodel_flags/has_flags.rb', line 132
def method_missing(method)
if method.to_s =~ /^has_[a-zA-Z0-9_]+\?$/
key = method.to_s.chomp("?").reverse.chomp("_sah").reverse
has?(key.to_sym)
elsif method.to_s =~ /^hasnt_[a-zA-Z0-9_]+\?$/
key = method.to_s.chomp("?").reverse.chomp("_tnsah").reverse
hasnt?(key.to_sym)
elsif method.to_s =~ /^has_[a-zA-Z0-9_]+!$/
key = method.to_s.chomp("!").reverse.chomp("_sah").reverse
has!(key.to_sym)
elsif method.to_s =~ /^hasnt_[a-zA-Z0-9_]+!$/
key = method.to_s.chomp("!").reverse.chomp("_tnsah").reverse
hasnt!(key.to_sym)
else
super
end
end
|
Instance Method Details
#has(flag) ⇒ Object
89
90
91
92
93
94
95
96
97
|
# File 'lib/activemodel_flags/has_flags.rb', line 89
def has(flag)
ensure_serialized
old_flags = self.flags
self.flags[flag.to_s] = true
on_flag_change(old_flags[flag.to_s], self.flags[flag.to_s]) unless old_flags == self.flags
end
|
#has!(flag) ⇒ Object
99
100
101
102
103
|
# File 'lib/activemodel_flags/has_flags.rb', line 99
def has!(flag)
has(flag)
self.save!
end
|
#has?(flag) ⇒ Boolean
77
78
79
|
# File 'lib/activemodel_flags/has_flags.rb', line 77
def has?(flag)
self.flags[flag.to_s]
end
|
#has_flag?(flag) ⇒ Boolean
73
74
75
76
|
# File 'lib/activemodel_flags/has_flags.rb', line 73
def has_flag?(flag)
return false if self.flags.blank?
self.flags[flag.to_s] != nil
end
|
#hasnt(flag) ⇒ Object
Also known as:
has_not
105
106
107
108
109
110
111
112
113
|
# File 'lib/activemodel_flags/has_flags.rb', line 105
def hasnt(flag)
ensure_serialized
old_flags = self.flags
self.flags[flag.to_s] = false
on_flag_change(old_flags[flag.to_s], self.flags[flag.to_s]) unless old_flags == self.flags
end
|
#hasnt!(flag) ⇒ Object
Also known as:
has_not!
116
117
118
119
|
# File 'lib/activemodel_flags/has_flags.rb', line 116
def hasnt!(flag)
hasnt(flag)
self.save!
end
|
#hasnt?(flag) ⇒ Boolean
Also known as:
has_not?
81
82
83
|
# File 'lib/activemodel_flags/has_flags.rb', line 81
def hasnt?(flag)
!has?(flag)
end
|
#respond_to?(method, include_private = false) ⇒ Boolean
150
151
152
|
# File 'lib/activemodel_flags/has_flags.rb', line 150
def respond_to?(method, include_private = false)
has_flag?(method.to_s) || super(method, include_private)
end
|
#unset_flag!(flag) ⇒ Object
122
123
124
125
126
127
128
129
|
# File 'lib/activemodel_flags/has_flags.rb', line 122
def unset_flag!(flag)
old_flags = self.flags
self.flags.delete(flag.to_s)
on_flag_change(old_flags[flag.to_s], self.flags[flag.to_s]) unless old_flags == self.flags
self.save!
end
|