获取属性值数组以及连接中的属性

时间:2015-06-06 04:14:30

标签: ruby-on-rails ruby activerecord

我相信,我已经接近了。我目前的查询是

items = Item.select("items.icon, items.name, item_types.name AS type, items.level, items.rarity, items.vendor_value")
.joins(:item_type)
.where("item_types.name = '#{params[:item_type]}'")

这会给我一个Item对象数组,至少使用item_type.name回复:type

我正在寻找的是一系列看起来如此的数组:

[icon, name, item_type.name, level, rarity, vendor_value]

我已经相当容易地工作了,但对我来说很重要的是,这可以通过sql一次性完成,而不是之后创建一个地图,因为有时候我需要用40k +项目来回应需要这个尽可能快。

不知道如何从上面转到属性数组,而不执行地图。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

pluck方法正是您想要的。在你的情况下,它看起来像这样:

items = Item.joins(:item_type)
            .where("item_types.name = ?", params[:item_type])
            .pluck("items.icon", "items.name", "item_types.name AS type",
                   "items.level", "items.rarity", "items.vendor_value")

我还更改了where调用以使用参数化而不是字符串插值 - 不建议使用插值,尤其是当您从用户那里获取值时。

进一步阅读:

Official documentation for pluck

An in-depth explanation of how to use pluck