Лучший способ ограничить действия (редактировать / удалить) с Ruby на рельсах и разработке

StackOverflow https://stackoverflow.com/questions/3834321

  •  26-09-2019
  •  | 
  •  

Вопрос

Я довольно новичок, чтобы Ruby на рельсах и прямо сейчас я делаю простое приложение. В этом приложении пользователь может создать множество элементов, и я использую разработку для аутентификации. Конечно, я хочу убедиться, что вы являетесь владельцем, чтобы удалить предметы (команды, игроки и т. Д.) И так, как я делаю это сейчас:

def destroy
    @team = Team.find(params[:id])
    if current_user.id == @team.user_id 
      @team.destroy    
      redirect_to(teams_url, :notice => 'The team was deleted.')
    else
      redirect_to root_path
    end      
end

Это лучший способ? Я думал о том, чтобы положить метод в модели, но я не уверен, что могу получить доступ к Teat_user оттуда. Я также думал о до_filer, что-то вроде:

before_filter :check_ownership, :only => [:destroy, :update]

Я тот случай, и если я хочу кодировать только один метод для всех объектов (все объекты, которые относятся, чтобы иметь «user_id» - поле)

Это было полезно?

Решение

В моем контроллере приложений я поставил:

before_filter :authorize

def authorize
  false # Or use code here to check if user is admin or not
end

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

Другие советы

Вы ищете решение авторизации на вершине своей аутентификации (разработчик)

Вы не можете получить доступ к текущему пользователю в модели NO. У меня было честное количество успеха, используя Aegis Makandra для авторизации. Это позволяет создавать роли указывать разрешения, связанные с каждой ролью. Документы довольно хорошие, и я знаю, что он отлично работает с разработкой, это довольно агности, я также использовал его с клирентом. Он также проходит неявную «Current_user» в ваши разрешения, чтобы вы могли указать и убедиться, что ваш текущий пользователь может принять соответствующие действия.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top