使用设计注册时如何自动向用户添加角色

时间:2011-01-19 23:06:16

标签: ruby-on-rails authentication ruby-on-rails-3 devise

我正在使用Devise 1.1.5。我有一个roles和一个roles_assignment表。用户注册时,是否可以在我的role_assignments表中自动分配角色?非常感谢!

我尝试了这个,但它无法正常工作

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

2 个答案:

答案 0 :(得分:2)

您的after_create方法无效,因为您尝试传递user,这在模型中并不重要。所有用户属性实际上都可以作为实例变量访问,因此您应该这样做:

def assign_role_after_sign_up
  RoleAssignment.create(:role_id => 1, :user_id => id)
end

如果你在用户和role_assignments之间有关系(如果你没有,为什么不呢?),你可以这样做:

# 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

答案 1 :(得分:1)

after_create模型中创建User回调,为新创建的用户创建并保存角色。

有关回调的详细信息,请参见Ruby on Rails guides

相关问题