我正在尝试在我的控制器中循环一个数组,以便从一系列电子邮件地址中创建新用户
@emails.each do |email|
@user = User.new(:email => email)
@user.save
end
现在它始终只创建一个用户,而不是数组实际包含的几个用户。
我怀疑,我不得不以不同方式重新初始化新用户,因为控制器只会处理它的实例。我做错了什么?
答案 0 :(得分:2)
你确定它只在db中创建一个用户吗?该代码看起来没问题,但@user
只会引用单个实例,因为它将在每次迭代时通过数组重新设置。
如果您最终想要一组用户,更好的方法是将它们添加到数组中(您也可以使用inject
):
@users = []
@emails.each do |email|
@users << User.create(:email => email)
end
另一个原因可能是由于验证使记录无效。你对电子邮件有任何验证吗?如果你想在记录无效的情况下让它爆炸,请使用save
或create
与爆炸(!)......
@emails.each do |email|
User.create!(:email => email)
end