Пользователи принадлежат организациям и видят / редактируют только элементы, добавленные их компанией Ruby on Rails. - PullRequest
0 голосов
/ 23 января 2019

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

У меня есть опыт работы с Devise, поэтому я хотел бы использовать его, если это возможно.

Как лучше всего решить эту проблему?

Любые ссылки на учебники, объясняющие это, были бы великолепны.

Спасибо

1 Ответ

0 голосов
/ 23 января 2019

Предположим, у вас есть модель пользователя, принадлежащая какой-либо компании:

class User < ActiveRecord
  belongs_to :company
  ....
end

Модель компании имеет много пользователей и имеет много продуктов (предметов):

class Company < ActiveRecord
  has_many :users
  has_many :products
end

модель продукта, которая принадлежитдля компании:

class Product < ActiveRecord
  belongs_to :company
  ....
end

В вашем случае вы пытаетесь добиться того, чтобы пользователь мог видеть / редактировать только продукты своей компании.Используя before_action в вашем контроллере, вы можете определить, что пользователь может / не может делать.Вот базовый пример:

class ProductsController < ApplicationController
  before_action :authorize_user, only: [:show, :edit]

  def show  
  end

  def edit 
  end

  private
  def authorize_user
   raise "Not Authorized" unless current_user.company_id == @product.company_id
  end
end

Таким образом, вы будете выдавать ошибку всякий раз, когда пользователь пытается получить доступ к продукту, который не принадлежит его компании.

Конечно, это просто базовыйНапример, вы должны взглянуть на драгоценный камень Pundit, который очень мощный, но вы должны понять суть этого:)

Дайте мне знать, если я что-то пропустил.

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...