2011-01-19 100 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