Module: EnumTable::Record
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/enum_table/record.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #enum(name) ⇒ Object
- #enum!(name) ⇒ Object
- #enum_change(name) ⇒ Object
- #enum_changed?(name) ⇒ Boolean
- #enum_id(name, value) ⇒ Object
- #enum_was(name) ⇒ Object
- #query_enum(name) ⇒ Object
- #read_attribute(name) ⇒ Object
- #read_enum(name) ⇒ Object
- #write_attribute(name, value) ⇒ Object
- #write_enum(name, value) ⇒ Object
Instance Method Details
#enum(name) ⇒ Object
152 153 154 |
# File 'lib/enum_table/record.rb', line 152 def enum(name) self.class.enums[name] end |
#enum!(name) ⇒ Object
156 157 158 159 |
# File 'lib/enum_table/record.rb', line 156 def enum!(name) self.class.enums[name] or raise ArgumentError, "no such enum: #{name}" end |
#enum_change(name) ⇒ Object
195 196 197 198 199 200 201 |
# File 'lib/enum_table/record.rb', line 195 def enum_change(name) reflection = enum!(name) change = attribute_change(reflection.id_name.to_s) or return nil old_id, new_id = *change [reflection.value(old_id), reflection.value(new_id)] end |
#enum_changed?(name) ⇒ Boolean
184 185 186 187 |
# File 'lib/enum_table/record.rb', line 184 def enum_changed?(name) reflection = enum!(name) attribute_changed?(reflection.id_name.to_s) end |
#enum_id(name, value) ⇒ Object
161 162 163 |
# File 'lib/enum_table/record.rb', line 161 def enum_id(name, value) self.class.enum_id(name, value) end |
#enum_was(name) ⇒ Object
189 190 191 192 193 |
# File 'lib/enum_table/record.rb', line 189 def enum_was(name) reflection = enum!(name) id = attribute_was(reflection.id_name.to_s) reflection.value(id) end |
#query_enum(name) ⇒ Object
171 172 173 174 175 |
# File 'lib/enum_table/record.rb', line 171 def query_enum(name) reflection = enum!(name) id = read_attribute(reflection.id_name) !!reflection.value(id) end |
#read_attribute(name) ⇒ Object
203 204 205 206 207 |
# File 'lib/enum_table/record.rb', line 203 def read_attribute(name) reflection = enum(name) or return super read_enum(name) end |
#read_enum(name) ⇒ Object
165 166 167 168 169 |
# File 'lib/enum_table/record.rb', line 165 def read_enum(name) reflection = enum!(name) id = read_attribute(reflection.id_name) reflection.value(id) end |
#write_attribute(name, value) ⇒ Object
209 210 211 212 213 |
# File 'lib/enum_table/record.rb', line 209 def write_attribute(name, value) reflection = enum(name) or return super write_enum(name, value) end |
#write_enum(name, value) ⇒ Object
177 178 179 180 181 182 |
# File 'lib/enum_table/record.rb', line 177 def write_enum(name, value) reflection = enum!(name) id = reflection.id(value) write_attribute(reflection.id_name, id) value end |