Class: Mobility::Plugins::ActiveModel::Dirty::MethodsBuilder
- Inherits:
-
Module
- Object
- Module
- Mobility::Plugins::ActiveModel::Dirty::MethodsBuilder
- Defined in:
- lib/mobility/plugins/active_model/dirty.rb
Overview
Builds module which adds suffix/prefix methods for translated attributes so they act like normal dirty-tracked attributes.
Direct Known Subclasses
Instance Method Summary collapse
-
#initialize(*attribute_names) ⇒ MethodsBuilder
constructor
A new instance of MethodsBuilder.
Constructor Details
#initialize(*attribute_names) ⇒ MethodsBuilder
Returns a new instance of MethodsBuilder.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/mobility/plugins/active_model/dirty.rb', line 44 def initialize(*attribute_names) attribute_names.each do |name| method_suffixes.each do |suffix| define_method "#{name}#{suffix}".freeze do __send__("attribute#{suffix}".freeze, Mobility.normalize_locale_accessor(name)) end end define_method "restore_#{name}!".freeze do locale_accessor = Mobility.normalize_locale_accessor(name) if attribute_changed?(locale_accessor) __send__("#{name}=".freeze, changed_attributes[locale_accessor]) end end end define_method :restore_attribute! do |attr| attribute_names.include?(attr.to_s) ? send("restore_#{attr}!".freeze) : super(attr) end private :restore_attribute! end |