我有一个名为name_translations
的hstore列的表,其中有很多翻译:
{ 'en' => 'En name', 'es' => 'Es name', ... }
它也在模型store_accessor :name_translations
我需要在name_translations hstore中获取id
和ru
键。我尝试Model.select("id, name_translations -> 'ru'")
,这是一个查询AR生成Model Load (0.6ms) SELECT id, name_translations -> 'ru' FROM "models"
但输出只有id:
[#<Model id: 95>,
#<Model id: 101>,
...
目前我停止了一些丑陋的代码:
Model.pluck(:id, :name_translations).map { |id, name| [id, name['ru']] }
什么方法可以让它变得更好?
答案 0 :(得分:1)
您可以在as
查询中使用select
,例如:
=> result = Model.select("id, name_translations -> 'ru' as something")
=> result.first.something
但输出只有id:
[#<Model id: 95>, #<Model id: 101>, ...
这就是AR的工作方式,如果你使用动态属性,它从未在输出中显示,因为它不是真正的列,而是别名。