2013-02-19 1 views
2

재설정 :야단법석/레일 사용자 암호는 내가 레일 콘솔에서 사용자 (관리자) 암호를 설정하기 위해 노력하고있어

bundle exec rails console 
> Spree::User.first.email 
=> "[email protected]" 
> Spree::User.first.encrypted_password 
    Spree::User Load (1.1ms) SELECT "spree_users".* FROM "spree_users" LIMIT 1 
=> "4ec556............................................." 
> Spree::User.first.password='spree123' 
    Spree::User Load (1.0ms) SELECT "spree_users".* FROM "spree_users" LIMIT 1 
=> "spree123" 
> Spree::User.first.password_confirmation='spree123' 
    Spree::User Load (1.0ms) SELECT "spree_users".* FROM "spree_users" LIMIT 1 
=> "spree123" 
> Spree::User.first.save! 
    Spree::User Load (1.0ms) SELECT "spree_users".* FROM "spree_users" LIMIT 1 
    (0.3ms) BEGIN 
    (1.3ms) SELECT COUNT(DISTINCT "spree_users"."id") FROM "spree_users" LEFT OUTER JOIN "spree_roles_users" ON "spree_roles_users"."user_id" = "spree_users"."id" LEFT OUTER JOIN "spree_roles" ON "spree_roles"."id" = "spree_roles_users"."role_id" WHERE "spree_roles"."name" = 'admin' 
    (0.3ms) COMMIT 
=> true 
> Spree::User.first.encrypted_password 
    Spree::User Load (1.0ms) SELECT "spree_users".* FROM "spree_users" LIMIT 1 
=> "1bc15d.............................................." 

지금까지 너무 좋아. 사용자의 새 암호가 변경되어 데이터베이스에 커미트 된 것 같습니다. 그러나 나중에 웹 클라이언트로 로그인하고 새 암호를 사용하려고하면 유효하지 않은 ID/암호 메시지로 실패합니다. 이 난 Spree::User.first.reset_password!('spree123', 'spree123')와 암호를 업데이트하려고했지만 문턱 로그인 두지.

레일 3.2.12 마구 1.3.2

내가 잘못하고있는 중이 야 어떤 생각? 새 암호를 올바르게 설정하는 방법은 무엇입니까?

감사합니다.

답변

12

문제는 Spree::User.first 일 때마다 데이터베이스에서 레코드를 다시로드한다는 것입니다. 즉, 레코드의 한 인스턴스에 값을 설정하고 다시로드 한 다음 실제로 변경되지 않은 다시로드 된 모델을 저장하는 것입니다. 답에 대한

user = Spree::User.first 
user.password='spree123' 
user.password_confirmation='spree123' 
user.save! 
+1

감사 :이 주위에 쉬운 방법은 그 대신 기록 및 업데이트를 포함하는 로컬 인스턴스 변수를 만드는 것입니다. 불행히도 인스턴스를 로컬 변수에 할당하는 것조차 도움이되지 않았습니다. * rake spree_auth : admin : create *로 새 관리자를 만들고 웹 관리 인터페이스로 변경해야했습니다. –

+1

저를 위해 일하십시오, 감사합니다 –

0
Spree::User.first.update_attributes(password: 'password')