Neo4j.rb - NameError:使用where时未定义的局部变量或方法

时间:2015-08-17 17:02:28

标签: neo4j.rb

我正在尝试检索所有BISAC节点,其中包含" Art"在说明中。

ba = Bisac.where(bisac_value =~ '.*Art.*')
NameError: undefined local variable or method `bisac_value' for main:Object

等效的cypher查询检索10个节点。

MATCH (b:Bisac) WHERE (b.bisac_value =~ '.*Art .*') RETURN b;

我在这里做错了什么?

3 个答案:

答案 0 :(得分:1)

您的解决方案肯定会有效,但是使用Query API的简单方法就是简单地使用Ruby正则表达式:

Bisac.all(:l).where(bisac_value: /.*Art.*/)

您甚至可以使用不区分大小写的正则表达式(/.*Art.*/i),它也将被转换为Cypher语法。

答案 1 :(得分:0)

找到答案(在文档中),这里是链接: http://neo4jrb.readthedocs.org/en/5.1.x/Querying.html

查询应为:

ba = Bisac.all(:l).where("l.bisac_value =~ {the_value}").params(the_value: '.*Art.*').pluck(:l)

或更简单:

ba = Bisac.all(:l).where("l.bisac_value =~ '.*Art.*'").pluck(:l)

答案 2 :(得分:0)

从分页中移除了Kaminari并使用了will_paginate。 使用的page_entries_info

问题解决了。