как автоматически добавить роль пользователю при регистрации с помощью devise - PullRequest
1 голос
/ 20 января 2011

Я использую 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 ]

2 голосов
/ 20 января 2011

Ваш метод 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 голос
/ 20 января 2011

Создание обратного вызова after_create в модели User, который создает и сохраняет роль для вновь созданного пользователя.

Дополнительная информация о обратных вызовах доступна в руководствах Ruby on Rails .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...