问题标签 [neo4j.rb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
445 浏览

ruby-on-rails - Neo4J 宝石关联和创建关系

这可以追溯到我对Neo4J Gem 的问题 - 保存未声明的关系

在文档中,他们举了一个例子

据我了解,第一行将删除所有关系,因为它手动将所有关联的评论设置为comment1,comment2。

但是第 2 行是做什么的呢?post.comments应该检索与帖子相关的评论。因此,它似乎正在与 comment3 和其他评论建立关系。但是我们不想在帖子和评论之间建立关系吗?

要么我不理解语法及其在做什么,要么写的内容不清楚发生了什么。

看我的例子,我们有

如果event是我的事件节点并且@event_question是我的 event_question 节点,为什么要@event_question.events << event在我的 event_question 和 event 之间创建关系?

现在undefined method '<<' for nil:NilClass,我的控制器中有一个,这完全是另一个问题。

我的 event.rb 有

我的 event_question.rb 有

@event_question两者event都存在但@event_question.events将返回 nil

0 投票
1 回答
139 浏览

ruby-on-rails - Neo4j gem - 查询特定关系

有很多方法可以获取节点和关系的模式,甚至根据关系属性查找关系本身(例如EnrolledIn.where(since: 2002),根据节点的特定属性获取关系的最佳方法是什么。例如

current_user -[:relationship]->事件

我知道事件 ID,所以对我来说,最合乎逻辑的方法是使用 event.id 作为正在搜索的属性之一来查询模式。我现在有这样的东西

event_rel = current_user.events(:e, :rel).where(id: event_id).pluck(:rel)

以上不起作用,它返回一个数组

0 投票
1 回答
353 浏览

ruby-on-rails - Neo4j gem - 更新关系属性方法

这是一个相当简单的问题。

是否有更新 gem 中关系属性的特定方法?我似乎无法做一个简单的update_attributesor update

我的关系已创建,并且 nil 类的更新未定义。

我应该使用另一种方法吗?

0 投票
1 回答
999 浏览

ruby-on-rails - 如何删除 routes.rb 中的前缀路径

我正在尝试使用 active 和 neo4j 模型创建一个应用程序,并且我想将以下内容用于我的 neo4j 模型:

并在我的控制器中使用它们,如下所示:

在我的 routes.db 文件中,我有以下路线:

这样做的问题是它只生成具有 的路由'/neo/usernodes/',而我只想使用具有'/usernodes/'.

可以只做产品'/usernodes/'吗?如果是,我该怎么做?

那么如果我在 routes.db 中使用:

我收到以下错误:

这是我的路线:

0 投票
1 回答
143 浏览

ruby-on-rails - Neo4j gem - 处理管理员关系的首选方法

这主要是一个设计/效率问题,但我想看看在 neo4j 中是否有一种首选的方法来处理这个问题,而不是在 sql db 中如何处理。

现在我有 2 个模型 -userevent. 我也有关系,userevent表示他们将参加此次活动。我想找出代表活动管理员的最佳方式。换句话说,我希望能够查询由用户管理的事件。

一种方法是admin_of在 user 和event. 另一种方法是创建参与关系的管理属性。就像是admin: true

admin_of查询似乎很简单,但向数据库添加了另一种关系。以后它也可以处理多管理员。

后一种方式可以通过我认为这样的方式进行查询:(来自文档)EnrolledIn.where(since: 2002)所以我的搜索将包括admin: true. 但是我不确定如何链接它,因为我希望它只是朋友活动。其他where查询通常基于节点而不是关系的属性。

后一种方法似乎是首选方法,但查询它的正确方法是什么?还是第一种方法更简单,即使它增加了额外的关系?

更新: 我想出了这样的东西

result = Event.query_as(:event).match("event<-[invite: INVITED]-(user: User)<-[:FRIENDS_WITH]-(user)").where(invite: {admin: /true/}).pluck(:event)

基于详细的查询

https://github.com/neo4jrb/neo4j/wiki/Search-and-Match

更新 2

我现在有这个,但没有匹配。开始剖析我的查询出了什么问题的最佳方法是什么?

current_user.friends.events.query_as(:event).match("event<-[invite]-(user: User)<-[friends_with]-(user)").where(invite: {admin: true}, event: {detail: 'property'}).pluck(:event)

我的用户模型有

has_many :both, :events, model_class: 'Event', rel_class: 'Invite'

我的事件模型有

has_many :both, :users, model_class: 'User', rel_class: 'Invite'

我的邀请模型有

0 投票
1 回答
117 浏览

ruby-on-rails - Neo4j gem - has_many 的详细查询方向:两者

我能够从这个原始问题Neo4j gem中进行特定的模式匹配- Preferred method to deal with admin relationship via this

我无法获得这样的修改版本来工作

所以我真正改变的是我在邀请课程中改变了from_nodeand的方向to_node

它以前设置为 fromEventUser。我的一个问题是,为什么我必须改变它才能使查询工作?方向不重要has_many: both吗?

另一个变化是将我的关系类型更改为小写。在我的模型中,它是用所有小写字母写的,这似乎很重要。我认为两者都会像neo4j那样转换为全大写,但就目前而言,它没有。

我确实认为我需要让 current_user 方法工作,因为我只想要 current_user 朋友的事件。建议?

0 投票
1 回答
93 浏览

ruby-on-rails - Neo4j gem - 在一个属性中查询多个参数

我什至不确定这个标题是否是最好的描述。

我正在通过一个表单为我的事件构建一些基本的过滤功能。事件具有来自选择下拉列表的类别。

现在,当您想要过滤时,您可以通过复选框选择您想要显示的类别。

我有点难过如何做到这一点。是否可以在一个查询中完成所有操作?还是您将每个类别分为 1 个?

我的旧查询是这样的current_user.friends.events(:event, :rel).where("rel.admin = {admin_p} AND event.detail = {detail_p}").params(admin_p: true, detail_p: true).pluck(:event)

在这种情况下,我需要类似event.category = category1, category2, cateogry3. 显然不是这样写的。实现这一目标的方法?

0 投票
1 回答
264 浏览

ruby-on-rails - Neo4j gem - 从数组对象中查询

在我之前的示例中,我有这个查询

current_user.friends.events(:event, :rel).where("rel.admin = {admin_p} AND event.detail = {detail_p}").params(admin_p: true, detail_p: true).pluck(:event)

current_user.friends.events将我带到事件以继续我的链,但是如果我已经有一个包含事件数组的对象,这是否有效?

在我的示例中,我正在尝试使用地理编码器来拉近。

所以我有我的用户和事件是地理编码的。

地理编码器可以做这样的事情

Venue.near([40.71, 100.23], 20)# 查找 20 英里内的所有 objs

所以我基本上可以找到所有事件并将其存储在一个对象中。现在我可以使用 neo4j 查询来过滤该对象吗?

例如

array_object(:event, :rel).where("rel.admin = {admin_p} AND event.detail = {detail_p}").params(admin_p: true, detail_p: true).pluck(:event)

即使这可行,是否有另一种方法可以做到这一点?

0 投票
0 回答
390 浏览

ruby-on-rails - Facebook Omniauth:此授权码已过期

我首先在 Rails 中的 Facebook 登录回调中收到此错误。我不记得它的其余部分,但在那之后,我无法重现它。

现在,当我进行相同的登录尝试时出现错误

if user = User.find_from_omniauth(env["omniauth.auth"])

这将错误放在

User.where(auth.slice(:provider, :uid)).limit(1).first

它只是说 Node with id 133354Neo4j::Session::CypherError in SessionsController#create

这是基于http://railscasts.com/episodes/360-facebook-authentication的客户端授权的一些​​代码

不完全确定从哪里开始调试?

更新:似乎我什至无法访问http://localhost:7474/browser/当我尝试拉起所有节点时,它给了我“未知错误”。第一个错误对数据库造成了严重破坏??

0 投票
1 回答
68 浏览

ruby-on-rails - Neo4j gem - 查询依赖于参数值

这可能不像是 rails 那样多的 neo4j。但也许我错了

我正在寻找有关处理参数为特定值的情况的建议。例如。在我的查询中

该事件有一个size_max属性,它可以是整数,也可以是any。现在我有any一个空白值。基本上,如果他们选择任何一个,我需要在查询中一起忽略该参数(或以类似的方式处理它)。欺骗它的一种方法是处理外部情况,如果选择了任何一个并且值为空白,我手动将其设置为一个不会被击中的非常高的数字。

现在不知道如何在查询内部或外部执行此操作,而无需使用奇怪的 hacky 方式。建议?

更新

正如你所建议的,我有我的疑问。以及处理“验证”的方法

我将它更改为size_param它不喜欢的空白。我希望能够处理这两种情况。例如,当您第一次点击页面时,参数是空的,而当您提交时,它是空白的。Nil 适用于场景 1 而不是场景 2。我需要一个||案例吗?

在我看来我有

<% if !@friends_events.blank? %>

我的错误是

Don't know how to compare that. Left: 0 (Long); Right: false (Boolean)在我看来,从上面的行。更改.blank?.nil?允许过滤器通过(尽管不正确)