ruby-on-rails - 返回从 hstore 中提取的特定值(Postgres + hstore_translate gem)

标签 ruby-on-rails postgresql activerecord rails-i18n hstore

我正在使用 hstore_translate在 Rails4 项目中处理 我的 I18n 需求。

假设我有以下模型:

class Thingy < ActiveRecord::Base
  translates :name
end

在迁移中将表定义为

create_table :thingies do |t|
  t.hstore name_translations
end
add_index ::thingies, :name_translations, using: :gin

在我的 Ruby 代码中,我希望检索 Thingies 的所有 namesids 的列表,名称在特定 语言环境

以前,在我的 Thingy 有一个本地化的 name 之前,我可以这样做

thingies = Thingy.order(:name).pluck(:id, :name)

现在我在做

thingies = Thingy.where("name_translations ? 'en'").order("name_translations -> 'en'").to_a.map do |t|
  {id: t.id, name: t.name}
end

但我不禁觉得有一种方法可以更好地利用 Postgres 在一行代码中完成所有这些,而无需在 Ruby 中调用循环。

最佳答案

我已经通过反复试验解决了这个问题。

thingies = Thingy.where("name_translations ? 'en'")
                 .order("name_translations -> 'en'")
                 .pluck(:id, ("name_translations -> 'en'"))

完成任务。

它不是很干,但它确实有效。

关于ruby-on-rails - 返回从 hstore 中提取的特定值(Postgres + hstore_translate gem),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26921553/

相关文章:

ruby-on-rails - graphql-ruby:如何在QueryType中获取当前用户IP?

ruby-on-rails - 如何在 Ruby on Rails 中有效地处理多个数据库表

ruby-on-rails - Rails 小写参数用于包含验证?

mysql - Rails 使用哈希更新多条记录

css - 如何让我的 Rails 应用程序背景图片正确显示?

ruby-on-rails - 使用路由约束时设计错误

ruby-on-rails - 如何使用new_record?,改变了?并坚持?本例中 Rails 中的方法

sql - PostgreSQL:如何为时间戳类型的列指定只有日期值的 WHERE 条件?

postgresql - 如何在谷歌云 postgres 上启用慢查询日志

postgresql - 使用 Sinatra + DataMapper + Postgres + Heroku 部署一个简单的测试应用程序返回 : Installing do_sqlite3 (0. 10.7) 错误