检查一个值是否存在于数据库中,如果存在则返回该值



我在这里运行Rails与用户包含:email_address列的模型

我有一个数组-emails_to_check[email1,email2,email3]我想检查它们是否存在于User数据库中。

我只想返回数据库中确实存在的值

下面是一个简单的一行代码。也许还有更高效的方法,但这可能是最直接和最地道的Rails。

emails_to_check = ['email1', 'email2', 'email3']
User.where(email_address: emails_to_check).pluck(:email_address)
下面是生成的SQL查询:
SELECT `users`.`email_address` FROM `users` WHERE `users`.`email_address` IN ('email1', 'email2', 'email3');

所以我使用rake任务

解决了这个问题
task :find_users_in_array,[:emails_to_find] => :environment do |task, args|
emails = args[:emails_to_find].split
emails.each do |email|
if User.find_by(email:email)
puts "#{email}"
end
end
end

我可以在一个列表中使用rake:find_users_in_array[email1 email2 email3]

最新更新