2010-08-06 52 views
0

我使用declarative_authorization爲我的應用程序,並有創建新用戶的問題。declarative_authorization問題與創建新用戶

我的用戶模型代碼:

 
    class User < ActiveRecord::Base 
    ROLE_TYPES = ["admin", "user", "guest"]  
    validates_inclusion_of :roles, :in => ROLE_TYPES 

    def role_symbols 
     @role_symbols ||= (roles || []).map{|r| r.to_sym} 
    end 

我的視圖代碼:

 
    <% form_for(@user) do |f| %> 
     ... 
     <p> 
     <%= f.label :roles %><br /> 
     <%= f.select :roles, User::ROLE_TYPES, :prompt => "Select a role" %> 
     </p> 
     <%= f.submit 'Add User' %> 
    <% end %> 
每次我試圖創建一個新用戶,並從下拉列表中選擇角色時

,認爲投訴:

Roles is not included in the list

從腳本/服務器的輸出,我可以看到角色實際上是設置:

 
"user"=>{"name"=>"kc", "password_confirmation"=>"kc", "roles"=>"guest", "password"=>"kc", "email"=>"[email protected]"} 

誰能告訴我什麼是錯?爲什麼驗證不會通過?

回答

0

是否有可能在用戶上擁有attr_accessible屬性來防止某些屬性的質量分配,並且:roles不在那裏?儘管如此,你會在日誌中看到這個警告。由restful_authentication生成的默認User類包含attr_accessible調用,因此如果您也使用該身份驗證插件,則它可能在您沒有添加它的位置。

用戶有沒有明確的正確類型的角色屬性?看起來你期望角色是來自你的表單的單個字符串,但是在來自declarative_authorization的代碼中,你得到了(roles || []).map,這表明那部分代碼至少期待着一個角色數組。