2017-12-01 20 views
0

두 가지 모델이 있습니다 : 사용자와 고용주. 사용자에게는 한 명의 고용주가 있습니다. 나는 범 학자를 권한 부여에 사용하고 있습니다. has_one 관계를 통해 새 작업을 만들고 작업을 만드는 방법은 무엇입니까? 이상적으로 사용자는 이미 양식을 제출 한 경우에도 양식에 갈 수 없습니다.단 하나 관계가있는 전문가

def new 
    unless current_user.employer.present? 
    @employer = Employer.new 
    else 
    flash[:error] = "Record already exists" 
    redirect_back(fallback_location: current_user) 
    end 
end 

을하지만 학자에 뭔가를 선호하는 것 :

나는 컨트롤러에서이 작업을 수행 할 수있다.

class EmployerPolicy < ApplicationPolicy 

    def create? 
    # Do I check is the @user has an employer before submission? 
    end 

    def new? 
    # Or do I check if the @user has a record before they get here? 
    end 
end 

어떤 통찰력도 인정 될 것입니다. 고맙습니다.

+1

정확히 어떤 권한을 부여 하시겠습니까/예방하고 싶습니까? – Cyzanfar

+0

'has_one' 관계 (반대의'belongs_to')가 올바른 선택입니까? 한 사용자가 고용주에 있고 고용주가 사용자에게 속해 있습니다 (단지 1 : 1 관계). – spickermann

+0

@ Cyzanfar. 나는 사용자에게 새로운 고용주 양식을 제출하고 한 번만 제출하기를 원합니다. – danielsmith1789

답변

1

나는이 문제를 전문가가없이 해결했다.

User 모델에서는 생성시 기본 연결과 자식 (Employer)을 빌드합니다. 그렇다면 routes.rb 고용주를위한 자료 아래에서 나는 create and new를 제외합니다.