rails:指定yml中的项目列表

时间:2011-05-24 18:30:56

标签: ruby-on-rails list load yaml space

我想在yml文件中指定资源授权信息。 admin可以创建员工,只能查看公司。

我使用YAML :: load方法加载此文件。

如果我使用 - 符号用于多个权限(操作,资源对),则会产生解析错误。如果我删除 - 符号,那么它只选择第一个动作资源对。我认为load方法在解析时需要1个空格缩进,如果我指定 - 则会违反一个空格缩进条件,这是错误的原因。什么是可能的解决方案。

如果我使用 - 符号列表

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

如果我不使用 - 符号列表

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

2 个答案:

答案 0 :(得分:4)

不确定这是否有帮助,但是当我尝试加载第一个示例时,它对我有用。也许压痕不正确?

无论如何,这可以在这里工作:

要求“YAML”

something = YAML.load_file(“admin.yaml”)

哦,是的,让我添加适合我的admin.yaml:

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

答案 1 :(得分:3)

如果您在生成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

我与上面的内容并不完全匹配,因为我使用符号作为键,但这应该可以帮助你,希望。