我有2種型號,視頻和ZencoderJob。每個視頻has_many
zencoder_jobs和zencoder_job belongs_to
一個視頻。Rails的ActiveRecord的與最後一個ID選擇項目的連接只
現在因爲一個視頻可以有多個作業指標(如當您更改視頻文件就會產生一個新的編碼工作),有很多工作機會與不同的編碼狀態。我使用「處理」和「完成」來了解何時可以通過API顯示視頻。
這是我從video.rb實際查詢
def self.finished_and_active(limit, offset)
limit(limit || 30)
.offset(offset.to_i || 0)
.order("id DESC")
.where(:active => true)
.joins(:zencoder_jobs).where(:zencoder_jobs => { :encoded_state => "finished" })
.uniq
end
的問題是,如果有3個職位的一個視頻,2歲和1個新的,舊的作業具有的「已完成」一encoded_state和新的有「處理」。它不找工作的最後一個ID,但如果有任何的工作,如果新的或舊有「成品」不管,它揭示它的API。
我試圖
.joins(:zencoder_jobs).where(:zencoder_jobs => { :encoded_state => "finished" }).last.uniq
但它拋出,因爲 「最後」 一個錯誤。任何想法?
我不知道是什麼問題你問。 'last'將只返回一個對象,而不是一個集合,所以調用'uniq'會拋出一個錯誤,但我不知道你實際要做什麼。 – 2012-04-24 20:12:29
即使最新作業的encoded_state處於「正在處理」狀態,此時視頻也會顯示,因爲存在編碼狀態「已完成」的較舊作業。如果它的encodede_state是「完成」與否,並且忽略較舊的作業 – 2012-04-24 20:23:19
如果最新作業「完成」但在此之前的作業仍處於「正在處理」狀態,該怎麼辦? – 2012-04-24 20:25:54