module Utranslate
Constants
- VERSION
Public Instance Methods
translate(attr_name, null: true, locales: I18n.available_locales)
click to toggle source
# File lib/utranslate.rb, line 13 def translate(attr_name, null: true, locales: I18n.available_locales) raise Utranslate::ColumnNotPresentError, "ERROR: #{attr_name} not present in #{name}." unless column_names.include?(attr_name.to_s) raise Utranslate::InvalidFormatError, "ERROR: #{attr_name} not a valid JSONB column." unless type_for_attribute(attr_name).type == :jsonb validates :"#{attr_name}", "Utranslate::Hash": true validates :"#{attr_name}", "Utranslate::AllTranslations": { locales: locales }, unless: -> { null } define_method "utranslate_#{attr_name}" do |locale, value| self[:"#{attr_name}"][locale.to_s] = value end define_method attr_name.to_s do |locale = I18n.locale, value = nil| if value.present? send(:"utranslate_#{attr_name}", locale, value) else self[:"#{attr_name}"][locale.to_s] end end define_method "#{attr_name}=" do |value| if value.is_a?(Hash) self[:"#{attr_name}"] = value else send(:"utranslate_#{attr_name}", I18n.locale, value) end end end