Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 返回从hstore中提取的特定值(Postgres+;hstore#u)_Ruby On Rails_Postgresql_Activerecord_Rails I18n_Hstore - Fatal编程技术网

Ruby on rails 返回从hstore中提取的特定值(Postgres+;hstore#u)

Ruby on rails 返回从hstore中提取的特定值(Postgres+;hstore#u),ruby-on-rails,postgresql,activerecord,rails-i18n,hstore,Ruby On Rails,Postgresql,Activerecord,Rails I18n,Hstore,我在Rails4项目中使用来处理 我的I18n需要 假设我有以下模型: class Thingy < ActiveRecord::Base translates :name end 在我的Ruby代码中,我希望检索一个列表,其中包含所有名称和ID,用于内容,名称位于特定的区域设置 以前,在我的东西有一个本地化的名称之前,我可以这样做 thingies = Thingy.order(:name).pluck(:id, :name) 现在我在做什么 thingies = Thingy.

我在Rails4项目中使用来处理 我的I18n需要

假设我有以下模型:

class Thingy < ActiveRecord::Base
  translates :name
end
在我的Ruby代码中,我希望检索一个列表,其中包含所有
名称
ID
,用于
内容
,名称位于特定的
区域设置

以前,在我的
东西
有一个本地化的
名称
之前,我可以这样做

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'"))
他做这项工作


它不是很干,但很管用。

你试过
东西的顺序(“name_translations->'{params[:locale]}')
thingies = Thingy.where("name_translations ? 'en'")
                 .order("name_translations -> 'en'")
                 .pluck(:id, ("name_translations -> 'en'"))