【发布时间】:2014-12-08 00:03:03
【问题描述】:
这可能是不可能的,但我有一个这样的查询
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,其中 start_date 距离不到一天。假设我试图提取事件、用户和关系。我需要对每个执行不同的操作。
我需要为每个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 没有用这个查询定义。
【问题讨论】:
标签: ruby-on-rails neo4j neo4j.rb pluck