我有:
{xyz => [:abc, :klm, :nop]}
我希望动态地拥有这样的东西(22,33,44是一些随机值):
{:abc.gte => 22, :klm.gte => 33, :nop.gte => 44}
gte
是Datamapper运算符,如http://datamapper.org/docs/find.html
有没有人知道如何构建第二个哈希?
答案 0 :(得分: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}