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