我目前正在努力解决一些在Rails中应该非常简单的事情。
我想发出一个ActiveRecord查询,从数据库中获取模型对象,然后将它们存储在一个散列中供以后查找。
我已经做了一些研究,但还没有找到最佳的方法来完成这一点,所以会感谢一些帮助。我的意图是减少使用查找哈希循环结构中的sql查询的数量。
在下面的伪代码中,我从sms网关获取状态码,并将其与ActiveRecord表进行比较,以获取所有状态码描述。
#Status_codes in array format
status_codes = StatusCode.all
status_codes_hash = status_codes.to_array????
#Fetch delivery-status from sms gateway
response = HTTParty.get(myUrl)
response.each do |status|
if status_codes_hash[status.code]
#Do stuff
end
end
5条答案
按热度按时间lnxxn5zx1#
使用此代码段获取状态的哈希值,并将其代码作为键:
代码段是
status_codes.group_by{|status| status.code}
的快捷方式像这样检查密钥也会更好,更通用:
toe950272#
您可以通过attributes方法将模型示例转换为散列:
eoigrqb63#
你可以用一个键值对数组来构造一个Hash,如下所示:
因此,您所要做的就是将StatusCodes转换为键值对,并将其用作Hash[]的输入
像这样
应该可以
http://www.ruby-doc.org/core-1.9.3/Hash.html#method-c-5B-5D
elcex8rz4#
我认为
inject
方法是一种方便的方法来完成您正在寻找的任务。d8tt03nd5#
ActiveRecord的最短版本:
返回: