0

所以我有以下(简化的)架构

用户有很多订阅 订阅有开始和停止(日期),以及引用(belongs_to)一个发布 发布有一个 id 和一个名称 用户通过订阅有_many 个发布

一个用户可能有多个订阅,但日期不同。

我想要的是获得一个用户的订阅列表,但只有最近的,而不是未来的,每个酒吧。

因此,鉴于订阅中的以下行:

ID | user_id | start      | stop      | publication_id
1  | 1       | 2013-01-01 | 2013-12-01| 1
2  | 1       | 2014-01-01 | 2014-12-31| 1
3  | 1       | 2011-01-01 | 2011-12-31| 1
4  | 1       | 2013-01-01 | 2013-02-01| 2

将返回表示 ID 1 和 4 的对象。

4

1 回答 1

0

这对你有用吗?

在您的用户模型中

def current_subscriptions
  self.subscriptions.where("start < ? AND stop >= ?", Date.today, Date.today)
end

因此,无论@user.current_subscriptions 是什么,它都会查询他们对今天之前开始并且直到今天或之后才停止的订阅,这将删除 ID 为 2 和 3 的对象并返回 ID 为 1 和 4 的对象。

此外,如果您想使用 Date.today 来表示今天,请在您的用户模型中包含Active Support

于 2013-11-15T07:20:07.990 回答