Ruby on rails 如何在使用Desive注册时自动向用户添加角色

Ruby on rails 如何在使用Desive注册时自动向用户添加角色,ruby-on-rails,authentication,ruby-on-rails-3,devise,Ruby On Rails,Authentication,Ruby On Rails 3,Devise,我正在使用Desive 1.1.5。我得到了一个角色和一个角色分配表。当用户注册时,是否可以在“我的角色分配”表中自动分配角色?非常感谢 我试过了,但没用 class User < ActiveRecord::Base after_create :assign_role_after_sign_up protected def assign_role_after_sign_up(user) RoleAssignment.create(:role_id

我正在使用Desive 1.1.5。我得到了一个
角色
和一个
角色分配
表。当用户注册时,是否可以在“我的角色分配”表中自动分配角色?非常感谢

我试过了,但没用

class User < ActiveRecord::Base  
  after_create :assign_role_after_sign_up

  protected  
    def assign_role_after_sign_up(user)  
      RoleAssignment.create(:role_id => 1, :user_id => user.id)  
    end
end
class用户1,:user\u id=>user.id)
结束
结束

用户
模型中创建一个
后创建
回调,为新创建的用户创建并保存一个角色


有关回调的详细信息,请参见。

您的
创建后方法将无法工作,因为您试图传递
用户
,这在模型中并不重要。所有用户属性实际上都可以作为实例变量访问,因此您应该改为:

def assign_role_after_sign_up
  RoleAssignment.create(:role_id => 1, :user_id => id)
end
如果用户和角色分配之间存在关系(如果不存在,为什么不存在?),您只需执行以下操作:

# If user :has_one :role_assignment
def assign_role_after_sign_up  
  create_role_assignment(:role_id => 1)
end

# If user :has_many :role_assignments
def assign_role_after_sign_up  
  role_assignments.create(:role_id => 1)
end