diff --git a/lib/globalize/model/active_record.rb b/lib/globalize/model/active_record.rb index 450729c..a0bd9df 100644 --- a/lib/globalize/model/active_record.rb +++ b/lib/globalize/model/active_record.rb @@ -23,8 +23,8 @@ module Globalize def define_accessors(klass, attr_names) attr_names.each do |attr_name| - klass.send :define_method, attr_name, lambda { - globalize.fetch I18n.locale, attr_name + klass.send :define_method, attr_name, lambda {|*args| + globalize.fetch(args.length > 0 ? args.first : I18n.locale, attr_name) } klass.send :define_method, "#{attr_name}=", lambda {|val| globalize.stash I18n.locale, attr_name, val diff --git a/test/model/active_record/translated_test.rb b/test/model/active_record/translated_test.rb index e54760c..2175745 100644 --- a/test/model/active_record/translated_test.rb +++ b/test/model/active_record/translated_test.rb @@ -288,6 +288,16 @@ class TranslatedTest < ActiveSupport::TestCase I18n.locale = 'de-DE' assert_equal 'foo', foo.subject end + + test "should be able to request for a specific locale as argument" do + post = Post.create :subject => 'foo' + I18n.locale = 'de-DE' + post.subject = 'bar' + I18n.locale = 'en-US' + assert_equal 'foo', post.subject + assert_equal 'foo', post.subject('en-US') + assert_equal 'bar', post.subject('de-DE') + end end # TODO should validate_presence_of take fallbacks into account? maybe we need