Ruby数组相当于active record.where(标准)

时间:2011-08-23 13:39:56

标签: ruby-on-rails ruby arrays sorting activerecord

这可能是一段很长的时间,但如果存在,生活会变得更加容易。

无论如何都是场景。我有一个哈希数组,其中一个键值是另一个哈希........是的,我知道。

这是一个更好的解释:

@myArrayOfStuff[0]
@myArrayOfStuff[0]["single-key"]
@myArrayOfStuff[0]["single-key"]["object-identifier"]

第一个返回哈希。 第二个将返回一个对象(在我的情况下称为页面,但示例使用不同的名称) 第三个返回我引用的任何变量作为object-identifier。

足够简单。

我想做的是选择另一个数组,其中object-identifier值不是nil或大于x。类似于activerecord.where方法。

@x = @myArrayOfStuff.where(["single-key"]["object-identifier"]) > 3orwhatever

显然这不起作用,因为语法很残忍。但还有另一种方法吗?另一种尝试的路径可能是通过此变量对数组进行排序。像

这样的东西
@x = @myArrayOfStuff.sort {|x,y| y <=> x } 

但是我真的不明白什么是ruby的排序方法。 有人可以帮忙吗?

2 个答案:

答案 0 :(得分:17)

您可以使用select方法。

@x = @my_array_of_stuff.select {|v| v["single-key"]["object-identifier"] > 3}

答案 1 :(得分:0)

collection = [
  {a:1, b:2, c:3},
  {a:2, b:3, c:4}
]
where = {a:1}
collection.select{|item|
  where.map{|k,v|
    item[k] == v ? true : nil
  }.compact.length == where.length
}