@alexnotonfire

Как реализовать авторизацию?

Представьте, что у меня есть модель под названием Animal. Эта модель содержит enum аттрибут с двумя возможными состояниями.

class Animal < ActiveRecord::Base
  enum kind: [ :cat, :dog ]
end


Потом, в моем контроллере, я создаю разные переменные экземпляра.

class AnimalsController < ApplicationController
  def index
    @cats = Animal.cat
    @dogs = Animal.dog
  end
end


В моей вьюхе у меня две отдельные коллекции.

<h1>Animals</h1>

<%= render partial: 'animals/cat', collection: @cats, as: :cat %>
<%= render partial: 'animals/dog', collection: @dogs, as: :dog %>


Как я могу сделать авторизацию чтобы быть способным редактировать ресурсы первой коллекции и не быть способным редактировать ресурсы второй коллекции?

Следующий подход не работает, так как это выполняется для одного action-а целиком.

before_action :current_user_only, except: [:edit]

Как я могу реализовать такой тип авторизации?

Заранее спасибо!
  • Вопрос задан
  • 313 просмотров
Пригласить эксперта
Ответы на вопрос 2
JPascal
@JPascal
В прошлом систем администратор, сейчас программист
Ответ написан
Комментировать
ibub1ik
@ibub1ik
Ruby/Rails Dev => Elixir
Отличное решение для авторизации (сам регулярно использую) - Pundit.
Есть еще один гем - CanCan. Раньше был очень популярен, но автор гема слился, и его теперь поддерживает сообщество. Все через DSL и метапрограммирование, что многие не любят.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы