0

好的,所以我的应用程序上有多个用户,每个用户都有多个“status_updates”。

每个状态更新都是 id'd,然后与它所属的用户关联。

因此,例如用户 2 的所有状态更新的 ID 顺序可能为 3、10、34、55

问题是,每个 status_update 都需要来自该用户之前状态更新的信息。显然,我不能简单地找到 id - 1 的状态更新,因为该状态更新可能属于不同的用户,并且无论如何都会返回 nil ,因为手头的用户不存在该状态更新。

我不知道如何编写 where() 参数,以便简单地为用户找到先前创建的状态更新。

苏...

以下是我的模型关于这个问题的重要部分:

after_find :previous_status_update   
.
.
.
def previous_status_update
 current_id = self.id
 previous_status_update = user.status_update.where( created_at: ? < self.created_at ).limit(1)
end  

在为此编写参数时,guides.rubyonrails.org 上的说明令人困惑。

谢谢你的帮助!

4

2 回答 2

2

你是如此接近。

previous_status_updates = user.status_update.where("created_at < ?", self.created_at)

这将返回所有早于该状态更新的状态更新。

如果你只想要一个,只需抓住该列表中的第一个或最后一个(无论是你想要的那个,如果你想要你也可以先排序它.order()

previous_status_update = user.status_update.where("created_at < ?", self.created_at).first
于 2012-09-14T18:57:47.977 回答
0

这肯定会为你工作。

previous_status_update = user.status_update.where( created_at: ? < self.created_at ).last
于 2012-09-14T19:05:19.967 回答