質問するログイン新規登録

回答編集履歴

1

じゃぁ何が悪いのか\?

2016/11/08 01:21

投稿

hana-da
hana-da

スコア1728

answer CHANGED
@@ -39,4 +39,20 @@
39
39
  本当に `user.persist? == true` になっているのであれば例外は発生しないはずです。
40
40
  例外が発生したのであれば **first_or_createがあるので①の問題は発生していない** は偽です。
41
41
 
42
- といった感じで1つづつ潰していってください。
42
+ といった感じで1つづつ潰していってください。
43
+
44
+ ----
45
+
46
+ じゃぁ何が悪いのか **persist?** が `true` でないという事は **create** に失敗しています。
47
+ createに失敗する理由はいくつかありますが `create!` にする事で create に失敗した時点で例外が発生するので
48
+
49
+ ```ruby
50
+ def self.from_omniauth(auth)
51
+ where(provider: auth.provider, uid: auth.uid).first_or_create! do |user| ←first_or_createがあるので①の問題は発生していない…?
52
+ user.provider = auth.provider
53
+ user.uid = auth.uid
54
+ end
55
+ end
56
+ ```
57
+
58
+ として例外メッセージを読めばなぜ first_or_create が失敗したのかわかるはずです。