Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Ruby中传递由符号和整数组成的变量?_Ruby On Rails_Ruby_Mongodb - Fatal编程技术网

Ruby on rails 如何在Ruby中传递由符号和整数组成的变量?

Ruby on rails 如何在Ruby中传递由符号和整数组成的变量?,ruby-on-rails,ruby,mongodb,Ruby On Rails,Ruby,Mongodb,我们使用以下Ruby代码使用MongoMapper访问Mongo数据库中的数据: @blah = Foo.where( :bar.gte => 2.5, :pub => @loo ).all 我们希望改变传递到数据库调用中的条件,但是如何处理符号和变量名称的存在 换句话说,以下方法不起作用: conditions = :bar.gte => 2.5, :pub => @loo @blah = Foo.where( conditions ).all 我们如何将条件放

我们使用以下Ruby代码使用MongoMapper访问Mongo数据库中的数据:

@blah = Foo.where( :bar.gte => 2.5, :pub => @loo  ).all
我们希望改变传递到数据库调用中的条件,但是如何处理符号和变量名称的存在

换句话说,以下方法不起作用:

conditions = :bar.gte => 2.5, :pub => @loo
@blah = Foo.where( conditions  ).all

我们如何将条件放入变量中?

您需要将其包装在散列中,但也需要将字符串用于复杂键:

conditions = {'bar.gte' => 2.5, :pub => @loo}
@blah = Foo.where( conditions  ).all
作为散列传递

conditions={:bar.gte=>2.5,:pub=>@loo}

编辑:

没有注意到你的第一把钥匙上有句号


conditions={'bar.gte'=>2.5,:pub=>@loo}

您只需将其分配为哈希:

conditions = {:bar.gte => 2.5, :pub => @loo}

是的,
:bar.gte
是一个有效的键。MongoMapper定义了返回一个
SymbolOperator
实例的方法。

在发布之前,您是否尝试过运行上述代码?@kp666:
:bar.gte
不是有效的散列键。@Surya不,我没有。不过OP最关心的是如何传递多个条件,我不确定字符串是否可以作为MongoMapper ORM中的条件。但是你可以试试:
conditions={'bar.gte'=>2.5,'pub'=>@loo}
然后
Foo.where(conditions)
这样我们就不需要复杂键的符号了?我现在不能测试这个,但是我知道你通常不能对一个符号使用方法调用,但是我希望使用这样的字符串也能得到同样的结果(大概您想要
gte
列在
bar
表中?)。