2011-01-19 39 views
1

私はDevise 1.1.5を使用しています。私はrolesroles_assignmentテーブルを持っています。ユーザーがサインアップするときにrole_assignmentsテーブルにロールを自動的に割り当てることは可能ですか?どうもありがとう!deviseを使用してサインアップするときにユーザーにロールを自動的に追加する方法

私はこれを試してみましたが、それは文句を言わない

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

userを渡そうとしているため、after_createメソッドは機能しません。これはモデルにはあま​​りありません。すべてのユーザ属性が実際にインスタンス変数としてアクセス可能なので、あなたが代わりに行う必要があります。

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

1

は、新しく作成したユーザーの役割を作成し、保存しUserモデルでafter_createコールバックを作成して動作します。

コールバックの詳細については、Ruby on Rails guidesを参照してください。

+0

thxアドバイスをお願いします。 – daniel

関連する問題