2012-02-20 2 views
3

질문 : ActiveAdmin과 Devise 2를 사용하여 아래 모델 디자인을 어떻게 얻을 수 있습니까?ActiveAdmin, 기존 (단품)의 Devise 2 사용자 모델이 작동하지 않음

기존의 User 모델을 사용하여 active_admin을 성공적으로 설정했습니다.

이 모델 디자인은 "관리자를 통해 사용자 관리"를 의미합니다. 여기

나의 현재의 모델 설정 :

irb(main):003:0> User.column_names 
=> ["id", "created_at", "updated_at", "avatar", "name"] 
irb(main):004:0> AdminUser.column_names 
=> ["id", "email", "encrypted_password", "reset_password_token", "reset_password_sent_at", "remember_created_at", "sign_in_count", "current_sign_in_at", "last_sign_in_at", "current_sign_in_ip", "last_sign_in_ip", "created_at", "updated_at"] 

지금 내 사용자 모델에 대한 몇 가지 authenticaton을 추가하고 싶습니다.

== AddDeviseToUsers: migrating =============================================== 
-- change_table(:users) 
-> 0.7201s 
-- add_index(:users, :email, {:unique=>true}) 
rake aborted! 
An error has occurred, this and all later migrations canceled: 

PG::Error: ERROR: could not create unique index "index_users_on_email" 
DETAIL: Key (email)=() is duplicated. 
: CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email") 

Tasks: TOP => db:migrate 

지금 내 현재 사용자 모델의 email 속성을 가지고 있지 않지만, 관리 사용자는 않습니다 : 그러나 나는이 충돌없이 rails generate devise User의 결과를 마이그레이션 할 수 없습니다입니다. 따라서 Devise가 User에 전자 메일 특성을 만들려고하면이 오류가 발생하는 것입니다. 하지만 왜? 그들은 다른 모델에 있습니까?

도움이됩니다. 경험, 게시물 또는 자습서 마이그레이션에 성공하지, (물론 답)

참고 내가 고안 위키와 here에있는 해결책을 시도을 감상 할 수있다.

답변

8

문제는 색인 생성에 있습니다. 테이블을 변경하고 있기 때문에 이미 레코드가 있다고 가정합니다. 전자 메일 열을 추가하고 고유 한 인덱스를 추가하려고하면 열에 고유 한 값이 아직 없으므로 작동하지 않습니다. Devise는 기본 로그인 필드이기 때문에 이메일 열에 색인을 추가합니다. 로그인 필드 (예 : 사용자 이름)가 다른 경우 대신 색인을 추가하십시오. 로그인을 위해 이메일을 사용하려는 경우 고유 한 값으로 이메일 열을 채운 다음 색인을 지금 제거하고 추가하십시오.

+0

예상대로 정확하게 작동했습니다. – rhodee

+0

나는 같은 문제가있다. 그런데, 위와 같은 항목을 : devise 위키에서 언급 한대로 t.change : email, : string, : null => false, : default => ""로 변경했다. 데이터 유형이 아니므로 어떤 트릭도 찾을 수 없었습니다. 따라서 마이그레이션 파일의 인덱스에 주석을 달고 마이그레이션을 진행하고 성공적인 마이그레이션 후에 주석을 제거했습니다. – Means

관련 문제