【问题标题】:ActiveRecord object does not save translated values with paper trail gemActiveRecord 对象不使用纸迹宝石保存翻译的值
【发布时间】:2017-09-16 17:27:55
【问题描述】:

我们正在为 I18N 使用 Rails 3.2.15 和 Globalize gem。我们最近集成了 Paper Trail Gem 以审计模型更改。

我们观察到,无论哪个模型字段标记为已翻译,都不会在 DB 中更新。

例如

class MyModel < ActiveRecord::Base
  translates :name
  has_paper_trail
end

当我更新 MyModel 对象的 name 属性时,它没有被保存。

版本:

Ruby 1.9.3

Rails 3.2.15

全球化3

paper_trail 2.7.2

【问题讨论】:

  • globalize gem 不会将翻译后的文本存储在模型表中,而是存储在专用的翻译表中。这意味着更改翻译不会更新模型本身,因此papertrail 没有机会注意到发生了变化。您还必须扩展翻译模型才能使用 papertrail。
  • 翻译没有任何模型。 gem 在内部处理它

标签: ruby-on-rails ruby activerecord paper-trail-gem globalize3


【解决方案1】:

我通过升级我的Globalize gem 并安装globalize-versioning gem 让它工作。它一起工作得很好。

class MyModel < ActiveRecord::Base
  translates :name, versioning: :paper_trail
  has_paper_trail
end

这确实需要您使用my_model.translations.versions 而不是通常的my_model.versions 获取翻译项目的版本。

【讨论】:

    猜你喜欢
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 2013-09-16
    • 1970-01-01
    相关资源
    最近更新 更多