0

わかりましたので、アプリに複数の「status_updates」を持つ複数のユーザーがいます。

各ステータス更新には ID が付けられ、所属するユーザーの関連付けがあります。

したがって、たとえばユーザー 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)

これにより、その更新よりも古いステータス更新がすべて返されます。

1つだけが必要な場合は、そのリストの最初または最後を取得してください(どちらでもかまいません。必要に応じて、最初にソートすることもできます.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 に答える