Skip to content

Instantly share code, notes, and snippets.

@mrbongiolo
Last active November 18, 2019 15:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mrbongiolo/488497bdcde13db1bba9d77977e2ac22 to your computer and use it in GitHub Desktop.
Save mrbongiolo/488497bdcde13db1bba9d77977e2ac22 to your computer and use it in GitHub Desktop.
coordinators and projects

Cria os scopes lá no model de Coordinator, assim fica mais fácil organizar. PS: não esqueça de testar isso, não tenho certeza se está funcionando corretamente, só escrevi diretamente aqui no gist.

scope :assigned_to_project, ->(id) { left_outer_joins(:project).where(projects: { id: id }) }
scope :without_projects, -> { assigned_to_project(nil) }
scope :without_projects_or_assigned_to_project, ->(id) { without_projects.or(assigned_to_project(id)) }

No teu controller pode fazer algo assim:

def new
  if coordinators_without_projects.blank?
    redirect_to admins_backoffice_projects_path, alert: "Necessário realizar o cadastro de um novo coordenador!"
  end
end

def edit
  # aqui provavelmente vai usar o coordinators sem projetos ou associado ao projeto atual
end

private

def coordinators_without_projects
  @coordinators_without_projects ||= Coordinator.without_projects
end

def coordinators
  @coordinators ||= Coordinator.without_projects_or_assigned_to_project(params[:project_id])
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment