| id | user_id | created_at (datetime) |
| 1 | 1 | 17 May 2016 10:31:34 |
| 2 | 1 | 17 May 2016 12:41:54 |
| 3 | 2 | 18 May 2016 01:13:57 |
| 4 | 1 | 19 May 2016 07:21:24 |
| 5 | 2 | 20 May 2016 11:23:21 |
| 6 | 1 | 21 May 2016 03:41:29 |
Benzersiz ve en son created_at user_id kayıdı sonucunu nasıl elde edebilirim, bu durum yukarıdaki durumda 5 ve 6 no'lu kayıtlar olacak mı?En son oluşturulan tarihiyle benzersiz kayıt seçin
Table.all.group_by(&:user_id)
#{1 => [record 1, record 2, record 4, record 6], etc}
Ve ondan maksimum tarihle kaydını seçin:
ben böyle bir karma dönmek için group_by kullanmaya çalışıyorum şimdiye kadar
Şimdiye kadar denedim ne olacak? Teşekkürler. Gordon cevaba
Güncelleme çözüm
sayesinde, ror ham sql sorgusu kullanmak find_by_sql
kullanıyorum.
@table = Table.find_by_sql("Select distinct on (user_id) *
From tables
Order by user_id, created_at desc")
#To include eager loading with find_by_sql, we can add this
ActiveRecord::Associations::Preloader.new.preload(@table, :user)
noob ama bir fikir denemek olurdu: Model.find (: id) .order (: created_at) .last ama sadece bir user_id için çalışır. Belki gibi pluck ekleyerek: Model.find (: id) .order (: created_at) .uniq.pluck (: user_id) .last – Maxence
Aslında bence işe yaramaz düşünüyorum. belki kullanarak: Model.order (: created_at) .where (: user_id ...). son ve döngü? – Maxence
Teşekkürler! Sonunda benzersiz user_id alabilen “farklı” cevabını seçtim. – pyfl88