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



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

Returns:

  • (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