【问题标题】:Raw SQL queries when using the Globalize gem with Ruby on Rails将 Globalize gem 与 Ruby on Rails 一起使用时的原始 SQL 查询
【发布时间】:2018-03-13 02:43:48
【问题描述】:

我在 Ruby on Rails 应用程序中使用 ruby​​ gem Globalize 来进行翻译。我有一个模型,Region,我正在翻译 name 列。使用ActiveRecord查询regions表时,如:

Region.where(name: 'translated')

正确返回翻译名称translated 的区域记录。 但是,当我查询时:

Region.where('name like ?', 'translated')

它返回一个空的 ActiveRecord_Relation。似乎使用 SQL 字符串进行查询会直接访问数据库记录,而无需使用 Globalize gem。

如何执行like 查询来检索已翻译的记录?

(我正在使用 Globalize 5.0.0 和 Rails 4.2.8)

【问题讨论】:

    标签: ruby-on-rails ruby activerecord globalize


    【解决方案1】:

    你可以这样做:

    Region.includes(:translations).where('name like ?', 'translated')
    

    这样您就可以从 Globalize gem 访问翻译表。

    【讨论】:

      【解决方案2】:

      我为我工作的解决方案是:

      Region.with_translations(I18n.locale).where('region_translations.name like ?', "translated")

      这将连接 region_translations.region_id = region.id 上的 region_translations 表,其中 I18n.locale = region_translations.locale

      【讨论】:

        猜你喜欢
        • 2021-10-10
        • 2018-05-18
        • 1970-01-01
        • 1970-01-01
        • 2012-12-16
        • 1970-01-01
        • 2023-01-29
        • 2014-01-22
        • 1970-01-01
        相关资源
        最近更新 更多