2017-12-01 12 views
0

私は2つのモデルを持っています:ユーザーと雇用者。ユーザーには雇用主が1人あります。私は認可のために専門家を使用しています。 has_one関係では、私はどのように新しいアクションを作成し、アクションを作成しますか?理想的には、ユーザーがすでにフォームを提出している場合でも、フォームには行かないことがあります。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:1の関係)。 – spickermann

+0

@ Cyzanfar。私は、ユーザーが新しい雇用主様のフォームに行って1回だけ提出したいと思っています。 – danielsmith1789

答えて

1

私は専門家なしでこの問題を解決しました。

Userモデルでは、作成時にデフォルトの関連付けと子(Employer)を作成します。その後、routes.rbの雇用主のためのリソースの下で、私は除外と作成を除外します。

関連する問題