Problema con ámbito de variables


#1

Hola a todos,

Estamos utilizando el plugin acl_system [1] para gestionar los
permisos de acceso en un site que estamos desarrollando.

Este plugin permite definir la lógica de permisos de forma
declarativa, por ejemplo:

class CompanyController < ApplicationController

access_control [:edit, :unfilled_values] => ‘admin’ do |context|
{ :company_id => params[:id] }
end

Mi problema es que no puedo acceder a params desde el bloque que le
estoy pasando a access_control. Necesito pasar esa variable de
contexto para controlar el acceso a determinadas acciones del
controlador.

De momento lo he solucionado metiendo lógica de mi aplicación en
acl_system, lo cual me parece como poco super-feo.

¿Alguien puede echarme un cable?

[1] http://www.agilewebdevelopment.com/plugins/acl_system


David A., el único desarrollador con una orden de alejamiento de
Jeffrey Zeldman
Simplelogica.net, ahora con un 33,3% más de intromisión en listas de correo

Cuando no hago otra cosa escribo en mildiez.net


#2

David A. wrote:

Hola a todos,

Estamos utilizando el plugin acl_system [1] para gestionar los
permisos de acceso en un site que estamos desarrollando.

Este plugin permite definir la l󧩣a de permisos de forma
declarativa, por ejemplo:

class CompanyController < ApplicationController

access_control [:edit, :unfilled_values] => ‘admin’ do |context|
{ :company_id => params[:id] }
end

Mi problema es que no puedo acceder a params desde el bloque que le
estoy pasando a access_control. Necesito pasar esa variable de
contexto para controlar el acceso a determinadas acciones del
controlador.

Quizá te pueda servir este planteamiento :

http://www.ruby-forum.com/topic/70694#96381

Espero te sirva.

Jaime Mora R.


#3

On 2/9/07, Jaime Mora R. removed_email_address@domain.invalid wrote:

Quizá te pueda servir este planteamiento :
http://www.ruby-forum.com/topic/70694#96381

Gracias Jaime, aunque en ese thread describen una solución para
restringir el acceso a determinados objetos al hacer un listado.

No se si me explico :-(, básicamente mi problema es que no puedo
pasarle al método access_control el id de un objeto porque ese id
viene en parámetros, supongo que es porque el contexto en el que se
ejecuta el bloque es distinto del contexto del controlador, por tanto
no existe el hash “params”

Este es el cachito de código problemático:

class CompanyController < ApplicationController

access_control [:edit, :unfilled_values] => ‘admin | contact’ do
|context|

aquí está mi problema, no tengo acceso a params[:id] desde aquí

context = { :company_id => params[:id] }
end

Gracias de nuevo

David A., el único desarrollador con una orden de alejamiento de
Jeffrey Zeldman
Simplelogica.net, ahora con un 33,3% más de intromisión en listas de correo

Cuando no hago otra cosa escribo en mildiez.net