我正在尝试在控制台中循环访问数组并使用find_by_email找到用户:
a = [ "brian@labyrinth.com", "lmontoymail@gmail.com"]
a.each do |email|
u = User.find_by_email("#{a}")
u.delete
end
但是我收到了一个错误:
NameError: undefined local variable or method `email' for main:Object
在这里,我得到的答案是:
1.9.3p194 :035 > a = [ "brian@labyrinth.com", "lmontoymail@gmail.com"]
=> ["brian@labyrinth.com", "lmontoymail@gmail.com"]
1.9.3p194 :036 > a.each do |email|
1.9.3p194 :037 > u = User.find_by_email(email)
1.9.3p194 :038?> u.destroy
1.9.3p194 :039?> end
User Load (0.7ms) SELECT "users".* FROM "users" WHERE "users"."email" = 'brian@labyrinth.com' ORDER BY users.created_at DESC LIMIT 1
NoMethodError:nil的未定义方法`destroy':NilClass
答案 0 :(得分:2)
首先,不要使用#{a}
。它引用数组,使用传递给循环的email
变量,该变量引用该迭代的电子邮件。
u = User.find_by_email(email)
您收到错误的原因是因为您遗漏了do
。
a.each do |email|
u = User.find_by_email(email)
u.destroy
end
您可以通过编写来优化查询。
User.where(email: a).destroy_all