rails模型范围中的关联数据

我有一个名为Post (博客文章)的模型和一个名为Category的模型。 每个postbelongs_to一个类别。 每个类别都有一个名为retainer的属性,用于指定post“过期”之前的时间量,例如movies_category.retainer = 30.days

我要做的是为Post创建一个范围,找到所有“过期”的post。 因此,例如,假设我要对30.days的值进行硬编码并且它适用于所有类别(因此所有post),范围将是:

 scope :expired, lambda { where("posts.created_at < ?", 30.days.ago) } 

但是,我没有对值30.days.ago进行硬编码,而是希望从post的类别中获取retainer值,并根据该条件确定条件,例如:

 scope :expired, lambda { where("posts.created_at < ?", Time.now - post.category.retainer) } 

所以说得好:我希望获得所有过期的post,并且过期状态由每个post的类别的保留值确定(即电影类别中的post在10天后到期,游戏类别中的post在5天后到期等)

这有可能吗? 我需要某种forms的加入吗?

 scope :expired, lambda { |retainer| where("posts.created_at < ?", Time.now - retainer) } 

然后就像使用它:

 Post.expired(post.category.retainer) 

或者从类别模型中:

 def Posts Post.expired(retainer) end