2011-01-19 98 views
1

我使用1.1.5设计时如何自动添加一个角色给用户。我得到了rolesroles_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

您的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 
+0

最后一种方法适用于我!非常感谢vonconrad! – daniel 2011-01-20 02:47:16

1

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

有关回调的详细信息,在Ruby on Rails guides可用。

+0

THX的意见! – daniel 2011-01-19 23:24:49