2013-06-30 2 views
0

Я немного смущен тем, как это работает. Я слежу за некоторыми учебниками, и я застрял в том, как узнать, какой пользователь, который подписывается, имеет определенные разрешения?Ruby on Rails CanCan, позволяет пользователям выбирать роли при регистрации.

Например, я хотел бы иметь пользователей выбирать между двумя различными ролями:

бизнеса или резидентами на экране Регистрации

Я должен добавить эти имена ролей в моей консоли в таблицу ролей? Или есть более простой способ добавить эти два разных типа ролей в мою базу данных?

Я добавил

<% for role in Role.find(:all) %> 
    <div> 
     <%= check_box_tag "user[role_ids][]", role.id, @user.roles.include?(role) %> 
     <%= role.name %> 
    </div> 
    <% end %> 

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

Является ли консоль лучшим способом просто добавить роли? Или есть еще один способ, который я могу сделать в будущем, я могу легко манипулировать вещью?

Спасибо!

ответ

1

три возможности для этого приходят на ум:

  1. Создайте административный интерфейс для включения администратора ролей добавить дополнительные роли через MVC
  2. Добавление новых ролей с помощью консоли, как вы упомянули
  3. Seed ваша база данных

Если админы имеют доступ к консоли Rails (и при условии, что они знают, как ее использовать), вариант 1 кажется переполненным , если только у вас уже есть другие функции администратора, включенные в MVC.

Лично я бы выбрал последний вариант. Это так же просто, как добавление через консоль, но дает дополнительную выгоду от фактической фиксации истории ваших изменений кода.

Номинально простейший способ посева вашей БД состоит в использовании seeds.rb. В нем вы можете писать все команды, которые вы должны правильно семян базы данных либо на начальном или последующее семени:

# db/seeds.rb 
cities = Role.create([{ name: 'Business' }, { name: 'Resident' }]) 

Затем из командной строки запустите rake db:seed. Все заявления в вашем seed.rb будут выполняться последовательно. Если есть какие-либо ошибки (или другие проблемы, например, дубликаты записей), ActiveRecord будет обрабатывать их соответственно (т. Е. Вам не нужно беспокоиться о бесшумных сбоях).

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

+0

Отлично! Это то, что я искал! Благодаря! :) – hellomello

Смежные вопросы