class Mobility::Backends::Sequel::Serialized
Implements {Mobility::Backends::Serialized} backend for Sequel
models, using the Sequel
serialization plugin.
@see sequel.jeremyevans.net/rdoc-plugins/classes/Sequel/Plugins/Serialization.html Sequel
serialization plugin @see sequel.jeremyevans.net/rdoc-plugins/classes/Sequel/Plugins/SerializationModificationDetection.html Sequel
serialization_modification_detection plugin
@example Define attribute with serialized backend
class Post < Sequel::Model extend Mobility translates :title, backend: :serialized, format: :yaml end
@example Read and write attribute translations
post = Post.create(title: "foo") post.title #=> "foo" Mobility.locale = :ja post.title = "あああ" post.save post.deserialized_values[:title] # get deserialized value #=> {:en=>"foo", :ja=>"あああ"} post.title(super: true) # get serialized value #=> "---\n:en: foo\n:ja: \"あああ\"\n"
Public Class Methods
build_op(attr, _locale)
click to toggle source
@!endgroup
# File lib/mobility/backends/sequel/serialized.rb, line 53 def self.build_op(attr, _locale) raise ArgumentError, "You cannot query on mobility attributes translated with the Serialized backend (#{attr})." end
configure(options)
click to toggle source
@!group Backend
Configuration @param (see Backends::Serialized.configure
) @option (see Backends::Serialized.configure
) @raise (see Backends::Serialized.configure
)
Calls superclass method
# File lib/mobility/backends/sequel/serialized.rb, line 47 def self.configure(options) super Serialized.configure(options) end
valid_keys()
click to toggle source
Calls superclass method
# File lib/mobility/backends/sequel/serialized.rb, line 39 def self.valid_keys super + [:format] end
Public Instance Methods
translations()
click to toggle source
Returns deserialized column value @return [Hash]
# File lib/mobility/backends/sequel/serialized.rb, line 83 def translations if model.deserialized_values.has_key?(column_name) model.deserialized_values[column_name] elsif model.frozen? deserialize_value(serialized_value) else model.deserialized_values[column_name] = deserialize_value(serialized_value) end end
Private Instance Methods
column_name()
click to toggle source
Calls superclass method
Mobility::Backends::HashValued#column_name
# File lib/mobility/backends/sequel/serialized.rb, line 113 def column_name super.to_sym end
deserialize_value(value)
click to toggle source
# File lib/mobility/backends/sequel/serialized.rb, line 105 def deserialize_value(value) model.send(:deserialize_value, column_name, value) end
serialized_value()
click to toggle source
# File lib/mobility/backends/sequel/serialized.rb, line 109 def serialized_value model[column_name] end