2016-12-18 6 views
0

Я пытаюсь создать администратора rails без использования драгоценного камня.Rails admin с нуля

У меня есть логин администратора и пространство имен. Мой вопрос заключается в том, как я могу, например, различать модель пользователя в admin и вне администратора.

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

ответ

3

Существует много способов сделать это. Это зависит от вашего проекта и его сложности. Самое простое решение будет добавить столбец администратора в модели пользователя, что-то вроде:

rails generate migration AddAdminToUsers admin:boolean 
    rails db:migrate 

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

rails c 
user = User.first # The console will load first user 
user.admin = 1  # It will return true 
user.save   # It will save and assign true to admin user 

Тогда вам просто нужно сделать простую логику в application_controller.rb и вызвать метод is_admin? от ваших взглядов. (При условии, что вы уже хранится идентификатор пользователя в сессии хэша: session[:user_id] = user.id)

helper_method :current_user, :signed_in?, :is_admin? 

    def current_user 
    @current_user ||= User.find(session[:user_id]) if session[:user_id] 
    end 

    def signed_in? 
    !!current_user 
    end 

    def is_admin? 
    signed_in? ? current_user.admin : false 
    end 

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

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