我有一个名为Post
(博客文章)的模型和一个名为Category
. 每个帖子belongs_to
一个类别。每个类别都有一个名为的属性,该属性retainer
指定帖子“过期”之前的时间量,例如movies_category.retainer = 30.days
我要做的是创建一个范围,Post
以查找所有“过期”的帖子。因此,例如,假设我要硬编码 的值30.days
并且它适用于所有类别(因此适用于所有帖子),范围将是:
scope :expired, lambda { where("posts.created_at < ?", 30.days.ago) }
但是,30.days.ago
我不想对value 进行硬编码,而是想retainer
从帖子的类别中获取 value 并以此为基础,例如:
scope :expired, lambda { where("posts.created_at < ?",
Time.now - post.category.retainer) }
言归正传:我想获取所有过期的帖子,过期状态由每个帖子类别的留存值决定(即电影类别的帖子10天到期,游戏类别的帖子5天到期, ETC。)
这甚至可能吗?我需要某种形式的加入吗?