这可能不可能,因为现在是这样,但我有一个这样的查询
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 不到一天的时间。假设我试图提取事件、用户和关系。我需要对每个执行不同的操作。
我需要为每个用户获取所有信息并users
为event
每个用户执行电子邮件操作。在该操作中,电子邮件需要有权访问该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
使用此查询定义。