2017-08-28 96 views
1

我有一個型號爲teststep,它具有sequencerevision的屬性。該屬性revision包含具有相同sequence每個記錄的數量增加,這樣的:只顯示具有相同屬性的最高值的記錄

id: 1, sequence: 1, revision: 1 
id: 2, sequence: 2, revision: 1 
id: 3, sequence: 2, revision: 2 
id: 4, sequence: 2, revision: 3 

我怎樣才能獲得這些記錄與所有不同sequence的,但只有最高revision,與id這種情況下記錄1和4?我嘗試了不同的東西,但這不起作用。

+0

看一看在下面的帖子。 [https://stackoverflow.com/questions/4222421/with-activerecord-how-can-i-select-records-based-on-the-highest-value-of-a-field](https://stackoverflow。問題/ 4222421/with-activerecord-how-can-i-select-records-based-the-highest-value-of-a-field) – Sambit

回答

1

此代碼應該做的伎倆

TestStep.group(:sequence).pluck(:id, :sequence, 'MAX(revision)') 
+0

謝謝,但是隻返回2個屬性,我想完整記錄。 – John

+0

我更新了我的答案以包含序列 – Bustikiller

2

試試這個

Teststep.group(:sequence).having('Max(revision) >= revision') 
+0

這個:'teststeps.where(teststep_type:「XTestStep」).group(:sequence,:id).having('max(revision)> = revision')。order序列)'仍然顯示所有記錄,是因爲'teststep_type'上額外的'where'? – John

+0

我的確研究了你的最後一個問題,它應該能夠工作,儘管你把地點,小組和地點相結合,這裏有一些可能可以幫助你的信息http://findnerd.com/list/view/Group-By-With-其中有或具有子句合軌道/ 2680 / – widjajayd

相關問題