我有一个名为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
,我想得到retainer
帖子类别的值并以此为基础的条件,例如:
scope :expired, lambda { where("posts.created_at < ?",
Time.now - post.category.retainer) }
简而言之:我想获取所有过期的帖子,过期状态由每个帖子类别的保留值决定(即电影类别中的帖子将在 10 天后过期,游戏类别中的帖子将在 5 天后过期) , ETC。)
这可能吗?我需要某种形式的加入或其他什么吗?
scope :expired, lambda { |retainer| where("posts.created_at < ?",
Time.now - retainer) }
然后像这样使用它:
Post.expired(post.category.retainer)
或者来自类别模型,例如:
def Posts
Post.expired(retainer)
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)