每天我都需要给有今天任务的用户写信。
为了做到这一点,我需要找到所有的用户谁被允许发送信件,并在这些用户中找到所有卡有一个截止日期今天。结果是三个具有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
2条答案
按热度按时间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-单据对关联表的查询条件。2skhul332#
您可以使用这样的sql连接来实现这一点
https://guides.rubyonrails.org/active_record_querying.html#joining-表