这是不可能的,因为它是正确的,但现在我有一个像这样Neo4j的宝石 - 采薇多个节点/关系
events = Event.as(:e).where("((e.date_start - {current_time})/{one_day_p}) < 1 ").users(:u, :rel).where("rel.reminded = {reminded_p}").params(reminded_p: false, one_day_p: one_day, current_time: time).pluck(:e,:u, :rel)
我们的目标是获得events
,其中起始日期小于查询一天之外。假设我试图采取事件,用户和关系。我需要对每个人采取不同的行动。
我需要为每个event
获取所有users
,并为每个用户执行电子邮件操作。在该行动中,电子邮件需要访问该event
。
接下来,我需要将rel.reminded
属性更新为true
。
是否有办法同时采集所有这些以便能够组织和执行这些任务?我开始单独做这件事,但我必须做出额外的查询才能实现。例如
events = Event.as(:e).where("((e.date_start - {current_time})/{one_day_p}) < 1 ").users(:u, :rel).where("rel.reminded = {reminded_p}").params(reminded_p: false, one_day_p: one_day, current_time: time).pluck(:e)
然后我不得不
events.each do |event|
# do stuff
end
# do another query that is associated and do more stuff
更新:
合并的答案,我有这样的事情没有清理时间的方法呢。我在一个搜索用户的地方添加了,因为我需要在稍后的电子邮件功能中考虑这一点。所以我不确定将它包含在查询中比在每个用户之外进行更有效。
@collection = Event.as(:e).where("((e.date_start - {current_time})/{one_day_p}) < 1 ").users(:u).where(setting_reminder: true).rel_where(reminded: false).params(one_day_p: one_day, current_time: time).pluck(:e, 'COLLECT(u)', 'COLLECT(rel)')
但是rel
未与此查询一起定义。
最后回到这个。使用类似于@collection = Event.as(:e).where(“((e.date_start - {current_time})/ {one_day_p})<1”的collect方法).users(:).rel_where(提醒:false).params(one_day_p:one_day,current_time:time).pluck(:e,'COLLECT(u)','COLLECT(rel)')它不知道集合中有什么'rel'。它说'rel没有定义'。我添加了一个编辑,以便将其更改为 – Clam 2014-12-17 08:50:04
'.users(:u,:rel)' – subvertallchris 2014-12-17 16:56:52
您应该可以执行')/ {one_day_p})<{one}'并将'one:1'添加到您的参数也是如此。 : -/ – subvertallchris 2014-12-17 16:57:31