Module: ActionMailer::Enqueable::RecordEncoder
- Extended by:
- RecordEncoder
- Included in:
- RecordEncoder
- Defined in:
- lib/action_mailer/enqueable/record_encoder.rb
Overview
Prepare ActiveRecord objects for safe serialization.
user = User.first
> #<User id: 1, account_id: 1, name: ‘Buddhy’>
RecordEncoder.encode(user)
> { :class => ‘User’, :id => 1 }
RecordEncoder.decode(user)
> #<User id: 1, account_id: 1, name: ‘Buddhy’>
Defined Under Namespace
Classes: RecordIdMissingError
Constant Summary collapse
- CLASS =
'class'.freeze
- ID =
'id'.freeze
Instance Method Summary collapse
Instance Method Details
#decode(params) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/action_mailer/enqueable/record_encoder.rb', line 44 def decode(params) decoded = params.map do |argument| case argument when Hash active_record?(argument) ? decode_active_record(argument) : decode(argument) when Array decode(argument) else argument end end params.is_a?(Hash) ? Hash[decoded] : decoded end |
#encode(params) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/action_mailer/enqueable/record_encoder.rb', line 27 def encode(params) encoded = params.map do |argument| case argument when ActiveRecord::Base encode_active_record(argument) when Array, Hash encode(argument) when NilClass, TrueClass, FalseClass, Numeric, String, Symbol argument else raise ArgumentError.new("Cannot encode #{argument} (#{argument.class})") end end params.is_a?(Hash) ? Hash[encoded] : encoded end |