1

我正在我的应用程序中从 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

有人可以帮助我吗?:-) 谢谢!

4

0 回答 0