问题:无法在每个循环中创建多个表条目

时间:2011-02-09 15:44:34

标签: ruby-on-rails ruby-on-rails-3

我正在尝试在我的控制器中循环一个数组,以便从一系列电子邮件地址中创建新用户

@emails.each do |email|
  @user = User.new(:email => email)
  @user.save
end

现在它始终只创建一个用户,而不是数组实际包含的几个用户。

我怀疑,我不得不以不同方式重新初始化新用户,因为控制器只会处理它的实例。我做错了什么?

1 个答案:

答案 0 :(得分:2)

你确定它只在db中创建一个用户吗?该代码看起来没问题,但@user只会引用单个实例,因为它将在每次迭代时通过数组重新设置。

如果您最终想要一组用户,更好的方法是将它们添加到数组中(您也可以使用inject):

@users = []
@emails.each do |email|
  @users << User.create(:email => email)
end

另一个原因可能是由于验证使记录无效。你对电子邮件有任何验证吗?如果你想在记录无效的情况下让它爆炸,请使用savecreate与爆炸(!)......

@emails.each do |email|
  User.create!(:email => email)
end