0

我有:

{xyz => [:abc, :klm, :nop]}

我想动态地拥有这样的东西(22、33、44 是一些随机值):

{:abc.gte => 22, :klm.gte => 33, :nop.gte => 44}

gte是一个 Datamapper 运算符,如http://datamapper.org/docs/find.html中所述

有谁知道如何构建第二个哈希?

4

1 回答 1

1

随机值的最小值/最大值是多少?

假设它是从 1 到 100 的范围。那么您只需这样做:

require 'data_mapper'

properties = [:abc, :klm, :nop]
rand_range = (1..100).to_a

hash = properties.inject({}) { |h, p| h.update p.gte => rand_range.sample  }
p hash

你会得到一个哈希值,你可以将它提供给 datamapper 的过滤器:

{#<DataMapper::Query::Operator @target=:abc @operator=:gte>=>24, #<DataMapper::Query::Operator @target=:klm @operator=:gte>=>52, #<DataMapper::Query::Operator @target=:nop @operator=:gte>=>51}

在此处查看现场演示

于 2012-11-08T00:24:05.157 回答