Ruby on rails, cancan и назначение ролей по умолчанию - PullRequest
3 голосов
/ 19 мая 2011

Я создал небольшой веб-сервис ruby, в котором я реализовал авторизацию cancan.

Я следовал этому уроку . Проблема в том, что я не могу найти способ назначить пользователю, когда он регистрируется на моем сайте, базовый уровень роли.

Я обнаружил, что сделал это с флажком, но это не то, что я хочу. Моя идея заключалась в том, чтобы поместить это назначение непосредственно в registrations_controller, но мне не удалось сохранить роль.

Я надеюсь, что кто-нибудь может мне помочь.

Спасибо.

Ответы [ 3 ]

12 голосов
/ 14 мая 2012

Вот что у меня сработало

user.rb:

  after_create :default_role

  private
  def default_role
    self.roles << Role.where(:name => 'User').first
  end
1 голос
/ 15 января 2014

У меня была такая же проблема, но я использую встроенную ассоциацию от rbates: http://railscasts.com/episodes/189-embedded-association

user.rb:

before_create :default_role

private
def default_role
 self.roles = ['client']
end

Работает как талисман, но обратите внимание, что ловушка before_create , а не after_create, потому что before_create запускается непосредственно перед операцией вставки.
After_create находится после операции вставки, которая в моем случае опаздывает.

0 голосов
/ 20 мая 2011

Я перестроил миграцию, я унифицировал таблицы пользователей и ролей, так что теперь я могу назначать все без проблем.

Спасибо.

...