我有这样的查询
order_id = 4
Order.find(order_id, :select => 'orders.root_id, orders.lft, orders.rgt').attributes
返回类似
的内容{"lft" => 1, "rgt" => 10, "root_id" => 9}
并按此顺序需要一个数组:root_id,lft,rgt。有人提示吗?
答案 0 :(得分:2)
这里的简单按钮是自己进行转换,因为您正在处理单个记录:
order_array = [order.root_id, order.lft, order.rgt]
更大的问题可能是“为什么?”,答案很可能是你做错了。
答案 1 :(得分:1)
attrs =Order.find(order_id, :select => 'orders.root_id, orders.lft, orders.rgt').attributes
array = [attrs['root_id'], attrs['lft'], attrs['rgt']]
那样呢?
答案 2 :(得分:1)
Order.find(order_id,
:select => 'orders.root_id, orders.lft, orders.rgt').attributes
.values_at("root_id", "lft", "rgt")
答案 3 :(得分:0)
对于订购,您可以对结果应用sort
方法。
h = {"lft" => 1, "rgt" => 10, "root_id" => 9}
h.sort { |x,y| y <=> x }
=> [["root_id", 9], ["rgt", 10], ["lft", 1]]
Order.find(order_id, :select => 'orders.root_id, orders.lft, orders.rgt').attributes.sort { |x,y| y <=> x }