当用户收到ror中的邮件时,查找带有今天日期的卡片

nbysray5  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(205)

每天我都需要给有今天任务的用户写信。
为了做到这一点,我需要找到所有的用户谁被允许发送信件,并在这些用户中找到所有卡有一个截止日期今天。结果是三个具有nil值的数组元素。如何更好地做到这一点?

@users = User.all {|a| a.receive_emails true} 

    @user_cards = []
    @users.each_with_index do |user, index| 
      @user_cards[index] = user.cards.where(start_date: Date.today).find_each do |card|
       @user_cards[index] = card
      end
    end

我的用户模型:

class Card < ApplicationRecord
  belongs_to :user
  # also has t.date "start_date"
end

我的卡型号:

class User < ApplicationRecord
   has_many :cards, dependent: :destroy
   # also has t.boolean "receive_emails", default: false
end
hujrc8aj

hujrc8aj1#

像这样的 @cards_to_send = Card.joins(:users).where("users.receive_emails = true").where(start_date: Date.today) 看一看https://guides.rubyonrails.org/active_record_querying.html#specifying-单据对关联表的查询条件。

2skhul33

2skhul332#

您可以使用这样的sql连接来实现这一点

User.joins(:cards).where(receive_emails: true, cards: { start_date: Date.today })

https://guides.rubyonrails.org/active_record_querying.html#joining-表

相关问题