首页 文章

declarative_authorization创建新用户的问题

提问于
浏览
0

我为我的应用程序使用了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 %>
<%= 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"=>"kc@one.com"}

任何人都可以告诉我什么是错的?为什么验证不会通过?

1 回答

  • 0

    您是否有可能在用户上拥有 attr_accessible 属性以防止某些属性的质量分配并且 :roles 不在那里?您会在日志中收到有关此内容的警告 . restful_authentication生成的默认User类确实包含attr_accessible调用,因此如果您也使用该身份验证插件,则可能没有添加它 .

    用户肯定有正确类型的角色属性吗?看起来你已经're expecting roles to be a single string from your form but in the code from declarative_authorization you'得到了 (roles || []).map ,这表明这部分代码至少期待一系列角色 .

相关问题