Rails ActiveRecord:选择具体的订单

时间:2011-09-16 14:02:23

标签: ruby-on-rails activerecord

我有这样的查询

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。有人提示吗?

4 个答案:

答案 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 }