Предположим, у вас есть модель пользователя, принадлежащая какой-либо компании:
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, который очень мощный, но вы должны понять суть этого:)
Дайте мне знать, если я что-то пропустил.
Приветствия