我正在我的应用程序中从 Globalize gem 切换到 Mobility gem。我遇到了 Mobility fallbacks 的问题:空属性在控制台中正确地回退到另一种语言,但在单元测试中没有。
我不明白为什么或如何解决这个问题......
在控制台中:
prod = Product.last
prod.send(:title=, "French Title", locale: :fr)
prod.send(:title=, nil, locale: :en)
prod.save
Mobility.with_locale(:en) { p prod.title }
# => "French Title"
在单元测试中:
require 'test_helper'
class ProductI18nTest < ActiveSupport::TestCase
test "test" do
prod = Product.last
prod.send(:title=, "French Title", locale: :fr)
prod.send(:title=, nil, locale: :en)
assert prod.save
Mobility.with_locale(:en) { assert_equal "French Title", prod.title }
# Error: Expected: "French Title". Actual: nil
end
end
我的模型看起来像:
class Product < ApplicationRecord
# [..]
extend Mobility
translates :title, fallbacks: true
# [..]
end
还有我的mobility.rb 配置文件:
Mobility.configure do
plugins do
fallbacks
locale_accessors
# fallthrough_accessors
# [..]
end
end
当前堆栈:
- 红宝石 2.5.9
- 导轨 5.1.7
- 移动性 1.1.2
- 小测 5.14.4
有人可以帮助我吗?:-) 谢谢!