2011-05-24 5 views
6

Quiero especificar la información de autorización de recursos en el archivo yml. el administrador puede crear un empleado y solo puede ver la empresa.rails: especifique la lista de elementos en yml

He utilizado YAML :: método de carga para cargar este archivo.

Si uso - símbolo para permiso múltiple (acción, par de recursos) da error de análisis. Si elimino el símbolo, solo selecciona el primer par de recursos de acción. Creo que el método de carga espera una sangría de espacio durante el análisis y, si lo especifico, se viola una condición de sangría de espacio que es motivo de error. ¿Cuál es la posible solución para esto?

si uso - símbolo para el listado

admin: 
- action: create 
    resource: employee 
- action: show 
    resource: company 

si yo no uso - símbolo para el listado

admin: 
action: create 
resource: employee 
action: show 
resource: company 
+0

eche un vistazo a mi ejemplo de trabajo. Creo que su suposición de '1 espacio sangrado' es incorrecta y está causando el error. – mkro

Respuesta

4

no está seguro de si esto ayuda, pero cuando intento cargar el primer ejemplo, esto funciona para mi. Tal vez la sangría no es correcta?

todos modos, esto funciona aquí:

requieren "YAML"

algo YAML.load_file = ("admin.yaml")

oh sí, permítanme añadir el admin.yaml que funciona para mí:

 
admin: 
    - action: create 
    resource: employee 
    - action: show 
    resource: company 
3

Si usted está teniendo problemas para generar YAML, me gustaría probar la construcción de un objeto en la consola, a continuación, convirtiéndola en YAML para ver cómo se ve. Por ejemplo:

test = { :admin => [ 
      {:action => "create", :resource => "employee"}, 
      {:action => "show", :resource => "company"} 
      ] } 

test.to_yaml 
=> "--- \n:admin: \n- :action: create\n :resource: employee\n- :action: show\n :resource: company\n" 

Incluso puede guardarla en un archivo si hace la vida más fácil:

File.open('test.yaml', 'w') do |out| 
    out.write(test.to_yaml) 
end 

que produce:

--- 
:admin: 
- :action: create 
    :resource: employee 
- :action: show 
    :resource: company 

no he bastante igualado lo que tengo arriba, ya que usé símbolos para las llaves, pero esto debería ayudarte, espero.

Cuestiones relacionadas