2017-01-03 44 views
0

我有Disclosure模型,它有accession_number列。該列有獨特的約束。如何通過軌道中的uniq數組檢查存在

而且當有一個accession_numbers數組時,我怎麼知道是否有accession_numbers還沒有使用。

我目前檢查存在的每個數字,但我認爲有這種行爲的更好方法。

accession_numbers.select{|number| !Disclosure.where(accession_number: number).exists?} 

回答

0

您可以查詢裏面有你的陣列中的所有accession_number披露。

existing = Disclosure.where(accession_number: accession_numbers).pluck(:accession_number) 

然後,只需從你的陣列

accession_numbers - existing 
0

刪除現有既然你已經在DB水平的唯一約束,

exiting_accessions = Disclosure.pluck(:accession_number) 

導致現有accesssions的數組。

accession_array - existing_accessions導致未使用的種質數組。