mysql - 带有关联的 Rails 范围
问题描述
所以目前我有这个范围:
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 ) }
我正在使用此范围查找至少有 1 个文档在 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
推荐阅读
- css - 更改分页页码的样式
- c++ - 在 for 循环内部或外部声明的 C++ 互斥锁
- python - PyCharm 警告我为 classmethod 函数创建的 classmethod 创建一个对象
- reactjs - 如何构建在 Apache 上运行的反应应用程序(具有多个环境)
- javascript - Mongoose,更新时属性返回不够
- php - 使用 PHP 从文本区域中取两三行
- python - 为什么我在这个 Python 程序中得到一个 TypeError?
- python - 使用 BeautifulSoup 抓取 Yahoo Finance 返回 None
- python - 复制并粘贴到帧缓冲区
- android - Kotlin Flow 与 LiveData