0

나는 직업 게시판을 작성하고 있으므로 두 개의 사용자 모델과 고용주 및 신청자가 있습니다. 저는 devise를 사용하고 있습니다. 따라서이 문제를 다형성 관계와 함께 사용하는 것이 좋습니다.devise를 사용할 때 다형성 사용자 모델

일부 레일 콘솔 테스트를 통해 나는 devise에서 (리소스)가 모든 사용자 정보를 전달하고 그것이 신청자 또는 고용주 인 role_type을 전달하고 있음을 알고 있습니다. 그러나 그것은 nil로 설정되어 있으므로 사용자가 저장 중이지만 신청자 또는 고용주의 역할 유형이 저장되지 않습니다. 또한 사용자 테이블의 신청자 또는 고용주 테이블에는 아무 것도 저장되지 않습니다. 내 코드는 아래에 있지만 내 질문은 정말 어떻게 devise 리소스 해시 role_type 전달합니까? 아니면 이것이 불가능할 경우이 문제를 해결하는 가장 우아한 방법입니다.

많은 감사! 난 아무것도를 놓친 경우

또한 전체 프로젝트 코드는 여기 아래 https://github.com/PatGW/jobs

조회수 -> devise-> 사용자 -> new.html.erb

<h1>Sign Up</h1> 

<%= form_for @user do |f| %> 
<% if @user.errors.any? %> 
    <div class="error_messages"> 
     <h2> Form is invalid</h2> 
     <ul> 
      <% for message in @user.errors.full_messages %> 
      <li><%= message %></li> 
      <% end %> 
     </ul> 
    </div> 
<% end %> 
<p> 
    <%= f.label :email %><br /> 
    <%= f.text_field :email %> 
</p> 
<p> 
    <%= f.label :password %><br /> 
    <%= f.password_field :password %> 
</p> 
<p> 
    <%= f.label :password_confirmation %><br /> 
    <%= f.password_field :password_confirmation %> 
</p> 

<p> 
    <%= radio_button_tag :role_type, "employer", :checked => false %><br /> 
    <%= label :role_type, 'Employer' %> 
</p> 
<p> 
    <%= radio_button_tag :role_type, "applicant", :checked => true %><br /> 
    <%= label :role_type, 'Applicant' %> 
</p> 


<p class="button"><%= f.submit %></p> 
<% end %> 

입니다

DevController에서 상속 한 UsersController

class UsersController < Devise::RegistrationsController 

def new 
super 
end 

def create 
User.transaction do 
    super 
    after_sign_in_path(resource) 
end 
end 

private 

def after_sign_in_path(resource) 
debugger 
    @user = User.new(params[:user]) 
if params[:role_type] == "coach" 
    role = Employer.create 
else params[:role_type] == "player" 
    role = Applicant.create 
end 
end 


end 

답변

0

문제는 Devise와 관련이 없지만 연관성/OO 관련입니다. 나는 당신의 코드를 체크 아웃했다 : 당신의 신청자와 고용주 모델은 사용자 필드를 가지고있는 것처럼 보인다. 그런 모델은 사용자의 일종이기 때문에 실제로 사용자로부터 상속해야한다. 따라서 다음을 시도하십시오.

class Employer < User 
    attr_accessible :location, :logo, :name 
end 

우선적으로 도움이되는지 확인하십시오. (Btw : 분명히, 당신은 또한 신청자에 대한 코드를 변경해야합니다)

+0

안녕 Stobbej 시도해 봤지만 도움이되지 않습니다. 난 레일 디버거를 사용하여 주위에 놀았 있고 role_type 매개 변수가 devise 리소스에 전달되고 생성 메서드를 호출 할 때 저장되지 않는 것을 볼 수 있습니다. 비트가 어떤 아이디어를 엉망으로 만들었습니까? – PatGW

관련 문제