Ruby 2.1.0でRails 3.2.14を使用しています。私は、電子メールIDが存在するかどうかをチェックすることで、DB内のユーザーを作成する方法を持っています。Rails 3 find_or_create_by_slugは重複レコードを作成することがあります
私はdevitsとSAMLをユーザ認証とセッション作成に使用します。
は私がそうするように、次のコードを使用します。
@user = User.find_or_create_by_email(:email=>"[email protected]", firstname: 'XY', lastname: 'Z', code: 'ABC')
これは、ほとんどの場合に動作しますが、上記のコードは、1を作成しようとして、私は自分のアカウントにエラー通知メールを取得しておく時間の残りの部分
An ActiveRecord::RecordNotUnique occurred in sessions#consume:
Mysql2::Error: Duplicate entry '[email protected]' for key 'email'
このエラーを回避するにはどうすればよいですか?
ARクエリが間違っているようです。 'User.find_or_create_by_email(" [email protected] ")'? – Surya
クエリが正しい場合、レコードが存在しない場合は、上記のように他のフィールドを含むユーザーレコードが作成されます。 – sahil
これを試してください: '@user = User.find_or_create_by_email(...)レスキューUser.find_by_email(...)' –