2011-10-26 9 views
1

私はseeds.rbファイルを持っており、何らかの理由で、これは動作しません:Rails - なぜ1つはうまくいくのですか?

#doesn't work 
u=User.new 
u['email']=h['email'] 
u['password']=h['password'] 
puts u['email'] 
puts u['password'] 
if u.save 
    puts "that saved" 
else 
    puts "that did not save" 
end 

が、これはありません:

#does work 
User.create({:email => h['email'], :password => h['password']}) 

は、1つの作品と一つにはない何らかの理由はありますか?レールコンソールから、最初は動作しますか?バリデーションに違いはありますか?私は 'rake db:seed'を実行するので、バリデーションは両方で有効になると考えられます。情報の不足のため申し訳ありません

THX

編集#1
。それぞれの "パスワードは空白にすることはできません"というエラーが表示されますが、パスワードをエコーアウトします。うーん...

+0

「動作しません」とはどういう意味ですか?エラーがありますか、それとも保存しませんか?後者の場合、 'u.errors'の内容を確認してください。 –

答えて

0

は、検証エラーを見て、何が起こっているかを調べる:

else 
    puts "that did not save because " + u.errors.join(' ') 
end 

編集:今、あなたは検証エラーが'password cant be blank'を含み、それはまだ保存に失敗したことを追加したこと、それはなりUser.create()は、User.save()が省略しているいくつかのことを明確にします。

パスワードハッシュのの生成がありません。 - blank passwordのエラーです。

+0

それぞれが「パスワードは空白にできません」とエラーになりますが、パスワードをエコーアウトします。 – timpone

0

はそれをこの方法を試してみてください:

u = User.new 
u.email = h['email'] 
u.password = h['password'] 
puts u.inspect 
if u.save! 
    puts "that saved" 
else 
    puts "that did not save" 
end 

私はu['password']としてuオブジェクトの属性にアクセスするためのアプローチは、あなたが間違って操縦されると信じています。

さらに、u.inspectを実行すると、モデルの状態全体が表示され、何が起きているのかをより鮮明に確認することができます。最後に、保存の末尾に「!」という文字列を追加すると、「失敗」してすぐにエラーが表示されます。

関連する問題