RoR 신입 회원이며 레일을 사용 중입니다. 3.2.3.루비 온 레일즈 (Ruby on Rails) - 확인 가능함
나는 장치를 사용해 왔지만 지금까지는 큰 문제 였지만 문제가 발생했습니다.
나는 User
테이블을 갖고 있으며 역할 테이블과 HABTM 연결을 가지고 있습니다. 나는 조인 테이블을 만들고 모든 것이 좋습니다. 사용자를 생성하고 역할을 선택할 때 조인 테이블에 데이터를 올바르게 작성합니다.
그러나 나는 'confirmable
옵션을 활성화 시켰으며 모든 것이 잘못되기 시작했습니다. 새 사용자를 만들 때 은 더 이상 조인 테이블에 레코드를 삽입하지 않습니다.
는 내 말은, 모든 나는 완료 문학은 :database_authenticatable, :recoverable, :rememberable, :trackable
및 :validatable
같은 다른 유증 옵션 앞에 , :confirmable
를 추가했다있다. 그와 아무 잘못,
class AddConfirmableToDeviseV < ActiveRecord::Migration
def change
change_table(:users) do |t|
t.confirmable
end
add_index :users, :confirmation_token, :unique => true
end
end
그것은 확인하기 위해 링크를 이메일을 보내지 만, 나는 그것을 클릭 할 때 : 나는 :confirmable
을 활성화되면
나는 (나는 또한 스택 오버 플로우에서 본)이 마이그레이션을 썼다 앱은 사용자에게 할당 된 역할이 없으므로 중단되며 이는 필수 사항입니다.
내가 말했듯이 내가 한 모든 것은 :confirmable
입니다. 내 사용자 모델에 #,:confirmable
과 같이 주석 처리하면 의 역할과 사용자 데이터가 조인 테이블에 올바르게 삽입됩니다.
무슨 일 이니? 어떤 팁? 사전에
감사합니다,
감사
업데이트
@Kyle C
나는 정규 작업을 사용자 만드는거야 :
보기 :
<div class="field">
<%= f.label :username %><br />
<%= f.text_field :username %>
</div>
(...)
<% for role in Role.find(:all) %>
<div class="field">
<%= check_box_tag "user[role_ids][]", role.id, @user.roles.include?(role) %>
<%= role.name %>
</div>
<%end%>
을 그럼 내 컨트롤러
:
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to(@user, :notice => 'User was successfully created.') }
(...)
:confirmable
없이,이 조인 테이블에 데이터를 입력하기에 충분하다. 이 위에
, 나는 내 응용 프로그램 컨트롤러이있다 :이 꺼내 경우
def after_sign_in_path_for(resource)
if current_user.roles.first.id == 1
admin_dashboard_path
elsif current_user.roles.first.id == 2
manage_path
end
end
, 사용자는 자신이 확인 메일, 그러나을 클릭하면 로그인됩니다, 중간 테이블을 조인 여전히 협회를 얻지 못합니다.
나는 (https://github.com/plataformatec/devise/blob/master/lib/devise/models/confirmable.rb) 설명서를 열람했지만 아직 신참이며 내 응용 프로그램의 초기 동작을 무시할만한 것을 찾지 못했습니다.
사용자를 만든 후 내 조인 테이블에서 레코드를 강제로 입력하는 방법이 있습니까?
나는이 시도했다 :
def create
@user = User.new(params[:user])
@role = Role.find(params[:user][:role_ids])
if @user.save
@user.role << @role
@user.save
AND (잘못된 일을 할 수 있지만 아직 성공하지)
(...)
if @user.save
query = ActiveRecord::Base.connection.raw_connection.prepare("INSERT INTO roles_users (role_id, user_id) VALUES (?,?);")
query.execute(@role.id, @user.id)
query.close
이 정말 실망 :confirmable
을 활성화 할 때, 다른 사람이이 문제를 함께했다 HABTM과 함께?
확인이 [답] (http://stackoverflow.com/questions/11954270/devise-를 사용하십시오 지원되는 모든 도움을
감사합니다 install-from-existing-model-database) 똑같은 문제. 수표 2.0 문서를 확인하십시오. –
나는 (unconfirmed_email을 제외하고)이 작업을 수행했으나 내 join 테이블의 역할 (users_role)은 아직 생성되지 않았다. 뭐가 될수 있었는지? – Silver