ruby on rails - ActiveRecord::RecordNotUnique (PG::UniqueViolplicate key value violates unique constraint "index_users_on_email"ation: ERROR: du -
i used omniauth-kakao gem login through sns.
then succeed login , got token , profile of sns.
but when other user(not me) has signed through sns, met error
activerecord::recordnotunique (pg::uniqueviolation: error: duplicate key value violates unique constraint "index_users_on_email" and code in app/model/user.rb makes error
def self.find_for_oauth(auth, signed_in_resource = nil) identity = identity.find_for_oauth(auth) user = signed_in_resource ? signed_in_resource : identity.user if user.nil? email = auth.info.email user = user.where(:email => email).first unless self.where(email: auth.info.email).exists? if user.nil? user = user.new( profile_img: auth.info.image, password: devise.friendly_token[0,20] ) user.save! #error message said line problem end end end if identity.user != user identity.user = user identity.save! end user end also, made 2 model. user.rb , identity.rb.(identity.rb refer user.rb)
identity.rb has 'provider(sns)', 'user' column. user.rb has user's information, profile of sns column.
when error occur, row added identity.rb , row has not user_id in 'user' column.(others added, user_id not added)
in addition, row not added user.rb never
what's problem??
should not saving email user in db in below code:
if user.nil? user = user.new( profile_img: auth.info.image, password: devise.friendly_token[0,20] ) user.save! #error message said line problem end it should like:
if user.nil? user = user.new( profile_img: auth.info.image, email: email, password: devise.friendly_token[0,20] ) user.save! #error message said line problem end
Comments
Post a Comment