Module: EnumTable::Record

Extended by:
ActiveSupport::Concern
Defined in:
lib/enum_table/record.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#enum(name) ⇒ Object



160
161
162
# File 'lib/enum_table/record.rb', line 160

def enum(name)
  self.class.enums[name]
end

#enum!(name) ⇒ Object



164
165
166
167
# File 'lib/enum_table/record.rb', line 164

def enum!(name)
  self.class.enums[name] or
    raise ArgumentError, "no such enum: #{name}"
end

#enum_change(name) ⇒ Object



203
204
205
206
207
208
209
# File 'lib/enum_table/record.rb', line 203

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

Returns:

  • (Boolean)


192
193
194
195
# File 'lib/enum_table/record.rb', line 192

def enum_changed?(name)
  reflection = enum!(name)
  attribute_changed?(reflection.id_name.to_s)
end

#enum_id(name, value) ⇒ Object



169
170
171
# File 'lib/enum_table/record.rb', line 169

def enum_id(name, value)
  self.class.enum_id(name, value)
end

#enum_was(name) ⇒ Object



197
198
199
200
201
# File 'lib/enum_table/record.rb', line 197

def enum_was(name)
  reflection = enum!(name)
  id = attribute_was(reflection.id_name.to_s)
  reflection.value(id)
end

#query_enum(name) ⇒ Object



179
180
181
182
183
# File 'lib/enum_table/record.rb', line 179

def query_enum(name)
  reflection = enum!(name)
  id = read_attribute(reflection.id_name)
  !!reflection.value(id)
end

#read_attribute(name) ⇒ Object



211
212
213
214
215
# File 'lib/enum_table/record.rb', line 211

def read_attribute(name)
  reflection = enum(name) or
    return super
  read_enum(name)
end

#read_enum(name) ⇒ Object



173
174
175
176
177
# File 'lib/enum_table/record.rb', line 173

def read_enum(name)
  reflection = enum!(name)
  id = read_attribute(reflection.id_name)
  reflection.value(id)
end

#write_attribute(name, value) ⇒ Object



217
218
219
220
221
# File 'lib/enum_table/record.rb', line 217

def write_attribute(name, value)
  reflection = enum(name) or
    return super
  write_enum(name, value)
end

#write_enum(name, value) ⇒ Object



185
186
187
188
189
190
# File 'lib/enum_table/record.rb', line 185

def write_enum(name, value)
  reflection = enum!(name)
  id = reflection.id(value)
  write_attribute(reflection.id_name, id)
  value
end