Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 创建新用户时出现声明性\u授权问题_Ruby On Rails - Fatal编程技术网

Ruby on rails 创建新用户时出现声明性\u授权问题

Ruby on rails 创建新用户时出现声明性\u授权问题,ruby-on-rails,Ruby On Rails,我对我的应用程序使用了声明式授权,在创建新用户时遇到问题 我的用户型号代码: 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_s

我对我的应用程序使用了声明式授权,在创建新用户时遇到问题

我的用户型号代码:

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 类用户角色类型的包含 定义角色符号 @角色符号| |=(角色| |[])。映射{r | r.to _sym} 结束 我的视图代码:

<% 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"=>"kc@one.com"} “用户”=>{“姓名”=>“kc”,“密码确认”=>“kc”,“角色”=>“来宾”,“密码”=>“kc”,“电子邮件”=>”kc@one.com"}
谁能告诉我怎么了?为什么验证无法通过?

您是否可能在用户上设置了可访问的属性,以防止对某些属性进行大规模分配,并且
:角色不在其中?不过,您会在日志中收到有关此的警告。restful_身份验证生成的默认用户类确实包含attr_可访问调用,因此如果您也在使用该身份验证插件,则该类可能不需要添加

是否确实存在适合用户的角色属性类型?看起来您希望角色是表单中的单个字符串,但在声明性|u授权的代码中,您得到了
(roles | |[])。map
,这表明该部分代码至少需要一个角色数组