2012-03-05 3 views
1

Я использую программу для моей системы аутентификации и cancan для разрешений. Я нахожусь в роли добавления роли, и я пытаюсь это сделать, когда пользователь подписывается, ему автоматически назначается роль. Я смотрел ryan bate screencast, а также следил за devise & cancan tutorial.рельсы cancan ролей?

Как я могу реализовать это, не используя флажки и автоматически назначая роль пользователю на основании того, когда они подписываются.

ответ

3

Вы можете попробовать использовать функцию обратного вызова: http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

before_create обратного вызова, вероятно, что вы хотите в вашей модели пользователя:

class User < ActiveRecord::Base 
    before_create :set_default_roles 
    private 
    def set_default_roles 
     self.roles = ['Default user'] 
    end 
end 
2

AR::Callbacks делает трюк для вас, однако я предпочитаю настройки роли, когда Объект пользователя сначала инициализируется:

class Role < ActiveRecord::Base 
end 

class User < ActiveRecord::Base 
    after_initialize :set_default_roles 

    private 
    def set_default_roles 
     self.roles = self.roles || [Role.find_by_name('Default Role')] 
    end 
end 
Смежные вопросы