Ruby on rails 按路线设置和设计角色

Ruby on rails 按路线设置和设计角色,ruby-on-rails,devise,Ruby On Rails,Devise,我的应用程序有3个用户角色:会员、残疾人、管理员 我试图通过路由设置角色,例如: get '/members/sign_up' => 'devise/registrations#create', :role => 'member' 然后在我的控制器中,我用它来覆盖Desive,我做了如下操作: def create super do resource.role = params[:role] resource.save end end 请说明我做错了什么,

我的应用程序有3个用户角色:会员、残疾人、管理员

我试图通过路由设置角色,例如:

get '/members/sign_up' => 'devise/registrations#create', :role => 'member'
然后在我的控制器中,我用它来覆盖Desive,我做了如下操作:

def create
  super do
    resource.role = params[:role]
    resource.save
  end
end
请说明我做错了什么,或者我还需要做什么

此外,我目前还没有办法检查该参数是否被传递给操作,因此如果您能建议这样做的方法,我将不胜感激

注意:我已经浏览了几个教程和文档页面,以及几十个SO问题,但还没有找到任何具体的内容

提前谢谢

编辑:我应该添加我已经将该字段添加到迁移文件中,并运行了rake db:migrate。
编辑2:
User。rails控制台中的最后一个
显示了用户表中角色列的
角色:nil
,我建议使用enum

add_列:用户,:角色,:整数,默认值:0

然后在用户模型中添加:

enum角色:{成员:0,管理员:1,管理员:2}

现在,默认情况下,用户将始终具有成员角色。不要通过路由设置用户角色-这听起来像是一个安全漏洞


如果您允许用户自行注册,让他们自行注册,他们将自动设置为成员,然后在管理区域中,您可以根据需要将他们的角色设置为其他角色。

使用binding.pry进行调试,使用localhost:3000/rails/info/routes检查是否生成了正确的路由。