所以目前我有这个作用域:
scope :ending_documents, -> { where('document1_valid_to <= ? OR document2_valid_to <= ? OR document3_valid_to <= ? OR document_4_valid_to <= ? ', Time.zone.now.end_of_day + 30.days, Time.zone.now.end_of_day + 30.days, Time.zone.now.end_of_day + 30.days, Time.zone.now.end_of_day + 30.days ) }
我使用这个范围来查找至少有一个文档在30天内结束或已经结束的用户。但是我需要通过关联找到另一个文档。
class User
has_many :user_cards
class UsersCard
belongs_to :user
belongs_to :card
class Card
belongs_to :user
has_many :user_cards
这些是示例表。
如何在相同范围内添加分配给用户的结束卡?我讲过连接但是当关联像这样进行时,我该怎么做呢?提前感谢!
我建议您使用has_many :through
关联
class User
has_many :user_cards, dependent: :destroy
has_many :cards, through: :user_cards
scope :ending_documents, -> { joins(user_cards: :cards).where('users.document1_valid_to <= ? OR users.document2_valid_to <= ? OR users.document3_valid_to <= ? OR users.document_4_valid_to <= ? OR cards.valid_to <= ?', Time.zone.now.end_of_day + 30.days, Time.zone.now.end_of_day + 30.days, Time.zone.now.end_of_day + 30.days, Time.zone.now.end_of_day + 30.days, Time.zone.now.end_of_day + 30.days) }
end