如何通过rails中的uniq数组来检查是否存在

时间:2017-01-03 02:59:27

标签: ruby-on-rails postgresql

我的Disclosure模型有accession_number列。该列具有唯一约束。

当有一系列accession_numbers时,我怎么知道是否还有尚未使用的accession_numbers。

我目前检查每个数字是否存在,但我认为这种行为有更好的方法。

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

2 个答案:

答案 0 :(得分:0)

您可以查询阵列中具有accession_number的所有披露信息。

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

然后只需从数组中删除现有的

accession_numbers - existing

答案 1 :(得分:0)

由于您已在数据库级别拥有唯一约束,

exiting_accessions = Disclosure.pluck(:accession_number)

会产生一系列现有的访问权限。

accession_array - existing_accessions会产生一系列未使用的种质。