Sha256: b9f7dec76a4bfafbcc90e48b4233634e792f4dd78f01652082b106e87ea74be4

Contents?: true

Size: 1015 Bytes

Versions: 1

Compression:

Stored size: 1015 Bytes

Contents

gem 'mongoid', '>= 2.0.0.beta6'
require 'mongoid'
require 'mongoid/i18n/localized_field'
require 'mongoid/i18n/localized_criteria'

module Mongoid
  module I18n
    extend ActiveSupport::Concern
    
    module ClassMethods
      def localized_field(name, options = {})
        field name, options.merge(:type => LocalizedField, :default => {})
      end
      
      def criteria
        I18n::LocalizedCriteria.new(self)
      end
    
      protected
      def create_accessors(name, meth, options = {})
        if options[:type] == LocalizedField
          define_method(meth) { read_attribute(name)[::I18n.locale.to_s] }
          define_method("#{meth}=") do |value| 
            write_attribute(name, (@attributes[name] || {}).merge(::I18n.locale.to_s => value))
          end
          define_method("#{meth}_translations") { read_attribute(name) }
          define_method("#{meth}_translations=") { |value| write_attribute(name, value) }
        else
          super
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongoid_i18n-0.1.3 lib/mongoid/i18n.rb