2017-01-03 81 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导致未使用的种质数组。