рельсы: укажите список элементов в yml - PullRequest
6 голосов
/ 24 мая 2011

Я хочу указать информацию об авторизации ресурса в файле yml. Администратор может создать сотрудника и может только просматривать компанию.

Я использовал метод YAML :: load для загрузки этого файла.

Если я использую символ - для нескольких разрешений (действие, пара ресурсов), это дает ошибку разбора. Если я удаляю символ - он выбирает только первую пару ресурсов действия. Я думаю, что метод загрузки ожидает 1 пробел отступ при синтаксическом анализе, и если я укажу - то нарушается одно условие отступа пробела, что является причиной ошибки. Какое возможное решение для этого.

если я использую - символ для листинга

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

если я не использую - символ для листинга

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

Ответы [ 2 ]

4 голосов
/ 24 мая 2011

не уверен, поможет ли это, но когда я пытаюсь загрузить первый пример, он работает для меня.Может быть, отступ не правильный?

в любом случае, это работает здесь:

требуют "YAML"

что-то = YAML.load_file ("admin.yaml")

о да, позвольте мне добавить admin.yaml, который работает для меня:

admin:
  - action: create
    resource: employee
  - action: show
    resource: company
3 голосов
/ 24 мая 2011

Если у вас возникли проблемы с генерацией YAML, я бы попытался создать объект в консоли, а затем преобразовать его в YAML, чтобы посмотреть, как он выглядит. Например:

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" 

Вы даже можете вывести его в файл, если это облегчит вашу жизнь:

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

Что дает:

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

Я не совсем соответствовал тому, что у вас выше, поскольку я использовал символы для клавиш, но это должно помочь вам, я надеюсь.

...