그래서 간단한 사용자 모델과 암호를 업데이트하는 양식이 있습니다.Rails는 개체를 업데이트하는 동안 고유성을 확인합니까? - 매우 이상한
@user.update_attributes(:password=>params[:password])
하지만이 작동하지 않았다, 나는 알아 냈 : 3으로
User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."auth_token" = 'z7KU4I0IXLjiRMpdF6SOVQ' LIMIT 1
User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."password_reset_token" = 'aMOjTN0ikPUOJo2JMVoDtQ' LIMIT 1
(0.0ms) BEGIN
User Exists (1.0ms) SELECT 1 AS one FROM "users" WHERE (LOWER("users"."email") = LOWER('[email protected]') AND "users"."id" != 1) LIMIT 1
(0.0ms) ROLLBACK
Redirected to http://localhost:3000/edit_user_by_reset?reset_token=aMOjTN0ikPUOJo2JMVoDtQ
내가 여기 고유성 유효성 검사가 실패 것을 말할 수있는 선택! 그리고 그것이 롤백 (ROLLBACK)의 이유입니다. 하지만 DB에 이러한 행이있는 것은 당연한데, UPDATE 동작이기 때문입니다. 어떻게해야합니까? 나는 패스를 :validate=>false
여기에서 원하지 않는다.
이메일 주소가 동일한 사용자가 두 명 이상 있습니다. 하나는 id = 1이고 다른 하나는 그렇지 않습니다. –
질문을 다시 읽기, 그것은 UPDATE 동작이기 때문에 기존 사용자의 일부 열을 업데이트하는 등의 사용자가 있음을 분명히 알 수 있습니다. –
나는 User.find (1) .valid? 거짓을 반환합니다. 당신이 "명백한"것이라고 생각하는 것은 부정확합니다. 쿼리는 동일한 이메일을 가진 * 다른 * 사용자 (즉, 다른 ID를 가진 사용자)를 찾고 있습니다. –