On 3 August 2010 14:17, Bla ... <[email protected]> wrote:
> Hi.
>
> I have the following controller of the update action:
>
> [code]
> def update
>   �...@projeto = Projeto.find(params[:id])
>
>    if (@projeto.update_attributes(params[:projeto]))
>
>    ## Mesmo raciocínio utilizado no create.
>   �...@permissaoa = Permissao.find(:first, :conditions => ["usuario_id =
> ?", @projeto.responsavel.to_i])
>   �...@permissaoavancado1 = Permissao.find(:first, :conditions =>
> ["projeto_id = ? and usuario_id = ?", 0, @projeto.responsavel.to_i])
>    if @permissaoAvancado1.nil?
>    ## Caso tenham excluido os usuários responsáveis, as permissões
> seriam nulas. Dai ele verifica se vai alterar ou criar uma permissão
>    if @permissaoA.nil?
>   �...@permissaoav = Permissao.new(params[:permissao])
>   �[email protected] = "Avançado"
>   �[email protected] = Usuario.find(:first, :conditions => ["id =
> ?", @projeto.responsavel.to_i])
>   �[email protected](params[:permissao])
>    end
>    end
>
>    ## O mesmo que avançado
>   �...@permissaoi = Permissao.find(:first, :conditions => ["projeto_id = ?
> and perfil = ? and usuario_id = ?", @projeto.id, "Intermediário",
> @projeto.responsavel_td.to_i])
>   �...@permissoesb = Permissao.all(:conditions => ["projeto_id = ? and
> usuario_id = ? and perfil = ?", @projeto.id,
> @projeto.responsavel_td.to_i, "Básico"])
>   �...@permissaoavancado2 = Permissao.find(:first, :conditions =>
> ["projeto_id = ? and usuario_id = ?", 0, @projeto.responsavel_td.to_i])
>    if @permissaoAvancado2.nil?
>    if @permissaoI.nil?
>     �...@permissaoin = Permissao.new(params[:permissao])
> #    else
> #     �...@permissaoin = @permissaoI
> #    end
>   �[email protected] = Usuario.find(:first, :conditions => ["id =
> ?", @projeto.responsavel_td.to_i])
>   �[email protected] = Projeto.find(:first, :conditions => ["id =
> ?", @projeto.id])
>   �[email protected] = "Intermediário"
> #    if [email protected]?
> #   �[email protected]_attributes(params[:permissao])
> #    else
>   �[email protected](params[:permissao])
>    if [email protected]?
>      for perm in @permissoesB
>        perm.destroy
>      end
>    end
>    end
>    end
>
>   �...@permissaob = Permissao.find(:first, :conditions => ["projeto_id = ?
> and perfil = ? and usuario_id = ?", @projeto.id, "Básico",
> @projeto.coordenador.to_i])
>   �...@permissaoavancado3 = Permissao.all(:conditions => ["projeto_id = ?
> and usuario_id = ?", 0, @projeto.coordenador.to_i])
>   �...@permissoesi = Permissao.all(:conditions => ["projeto_id = ? AND
> usuario_id = ? AND perfil = ?", @projeto.id, @projeto.coordenador.to_i,
> "Intermediário"])
>    ## Se ele já tiver a permissao de avançado, não faz nada. Se não
> tiver, cria uma (sem nenhum projeto)
>    if @permissaoAvancado3.empty? && @permissoesI.empty?
> #    if @permissaoB.nil?
>     �...@permissaoba = Permissao.new(params[:permissao])
> #    else
> #     �...@permissaoba = @permissaoB
> #    end
>   �[email protected] = Usuario.find(:first, :conditions => ["id =
> ?", @projeto.coordenador.to_i])
>   �[email protected] = Projeto.find(:first, :conditions => ["id =
> ?", @projeto.id])
>   �[email protected] = "Básico"
> #    if [email protected]?
> #   �[email protected]_attributes(params[:permissao])
> #    else
>     �[email protected](params[:permissao])
> #    end
>    end
>
>
>    ## Ao editar um projeto, existe a possibilidade da alteração do
> responsável pela Td
>    ## Portanto, ele procura por todas as tarefas daquele projeto
>   �...@tarefas = Tarefa.all(:conditions => ["projeto_id = ?",
> @projeto.id])
>    ## Varre cada uma
>    for tarefa in @tarefas
>    ## Altera o campo "responsável" pelo respnsável_td recém modificado
> (ou não) na edição do projeto
>      tarefa.responsavel = Usuario.find(:first, :conditions => ["id =
> ?", @projeto.responsavel_td]).nome
>    ## Atualiza as alterações
>      tarefa.update_attributes(params[:tarefa])
>    end
>        flash[:msg] = "Projeto atualizado com sucesso"
>        redirect_to(@projeto)
>   else
>      render :action => "edit"
>    end
>  end
> [/code]
>
> It works ok, but what i wanna do is:
>
> destroy the "permissao" of "responsavel_td" and "coordenador" BEFORE the
> update.
> in other words, if the "responsavel_td" or the "coordenador" change, i
> wanna to destroy the "permissao" existing for those who were before the
> change.
>
> I make my self clear?

No, not to me anyway, the code and question are too complex.  Try to
reduce your question to to it's basic requirement.  Explain what you
want to do simply rather than providing large amounts of (mostly)
irrelevant code that would take too much time for the reader to
understand.

>
> If you can't understand me, just think this way.. How can I return the
> value before the update?

That is a much simpler question, but does not make sense as a
standalone question

Colin

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to