2011-05-24 61 views
6

我想在yml文件中指定資源授權信息。 admin可以創建一個員工,只能查看公司。rails:指定yml中的項目列表

我用YAML :: load方法來加載這個文件。

如果我使用 - 符號的多個權限(行動,資源對)它給解析錯誤。如果我刪除 - 符號,那麼它只會選擇第一個操作資源對。我認爲加載方法期望1空間縮進,而如果我指定 - 然後一個空間縮進條件被違反,這是錯誤的原因。這是什麼可能的解決方案。

如果我使用 - 符號上市

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

如果我不使用 - 符號上市

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

看看我的工作示例。我認爲你對'1空格縮進'的假設是錯誤的並導致錯誤。 – mkro 2011-05-24 19:01:39

回答

4

不知道這會有所幫助,但是當我嘗試加載的第一個例子,這個對我有用。也許縮進不正確?

反正這個作品在這裏:

要求 「YAML」

東西= YAML.load_file( 「admin.yaml」)

哦,是的,我要補充的是作品的admin.yaml對我來說:

 
admin: 
    - action: create 
    resource: employee 
    - action: show 
    resource: company 
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 

我還沒有完全匹配的你有上面的,因爲我用鑰匙的符號,但這應該幫助你,我希望。