2011-02-09 9 views
0

私は今では常にだけ作成し、電子メール、住所が問題:各ループでmulitpleテーブルエントリを作成できません

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

の配列から、新しいユーザーを作成するために、私のコントローラ内の配列をループにしようとしています1人のユーザであり、アレイのいくつかが実際には含まれていません。

私は何らかの形で新しいユーザーを別の方法で再初期化する必要があると思うのですが、コントローラーはそのインスタンスでしか処理できません。私は間違って何をしていますか?

答えて

2

dbに1人のユーザーしか作成していないのですか?そのコードは大丈夫だと思われますが、@userは1つのインスタンスを参照することがあります。これは、配列全体の各繰り返しで再設定されるためです。あなたが最後にユーザーの配列を希望している場合は、それを行うためのより良い方法は、配列に追加することです

(あなたも、このためにinjectを使用することができます):

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

もう一つの理由レコードを無効にする妥当性確認のためである可能性があります。電子メールの検証はありますか?あなたはレコードが無効である場合、それは爆破したい場合は、バタンとsaveまたはcreateを使用して(!)...

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

ああOK。実際、それは検証エラーでした。電子メールは見栄えが良かったのですが、最後のものを除くすべてが最後に空白がありました。爆発のヒントのためのThx! –

関連する問題