具有has_one关系的权威人士

时间:2017-12-01 19:08:36

标签: ruby-on-rails ruby pundit

我有两个模型:用户和雇​​主。用户有一个雇主。我正在使用专家授权。使用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 个答案:

答案 0 :(得分:1)

我最终解决了这个没有专家的问题。

User模型中,我在create上构建了默认关联和子项(Employer)。然后在雇主的资源下的routes.rb我排除创建和新。