Size: a a a

pro.rb (Ruby/Rails / RU)

2021 April 08

FK

Fedor Koshel in pro.rb (Ruby/Rails / RU)
как-то так
источник

BO

Black Olive in pro.rb (Ruby/Rails / RU)
Ну такой случай, что модератор может на клиентской части менять данные и в администраторской
источник

FK

Fedor Koshel in pro.rb (Ruby/Rails / RU)
да, но модель - это объект типа Class, а конкретный пользователь - типа User. Значит эти два разрешения можно разделить по типу
источник

FK

Fedor Koshel in pro.rb (Ruby/Rails / RU)
Ну если вы смешиваете бизнеслогику, то зачем тогда пилить монолит?
источник

DD

Dan Dan in pro.rb (Ruby/Rails / RU)
Ну вот как то безальтернативно получается, что если не монолит то два или более микросервисов. Приложение не тянет на достаточно большое для микросервиса. Просто надо разделить, чтобы разные Команды писали. И вот получается куда общий код класть в таком случае?
источник

FK

Fedor Koshel in pro.rb (Ruby/Rails / RU)
Сервисы делают как раз ради разделения безнеслогики, а не ради сервисов
источник

FK

Fedor Koshel in pro.rb (Ruby/Rails / RU)
а зачем делить то? Над одной репой вполне могут работать несколько команд. Не вижу в этом проблемы, гит не просто так придумали
источник

AD

Anton Davydov in pro.rb (Ruby/Rails / RU)
может быть, но есть некоторые "но"
источник

DD

Dan Dan in pro.rb (Ruby/Rails / RU)
Требуется не экспоузить код (и часть данных и даже структур) предметной области в общий гит
источник

AD

Anton Davydov in pro.rb (Ruby/Rails / RU)
> Логично было бы пилить по бизнеслогике, тогда в одном месте данные одни

как пример, аккаунты, которые в двух местах нужны
источник

FK

Fedor Koshel in pro.rb (Ruby/Rails / RU)
ну тут логично было бы сделать централизованную авторизацию, api шлюз, или что-то подобное
источник

FK

Fedor Koshel in pro.rb (Ruby/Rails / RU)
а дальше через какие-нибудь JWT передавать права в сервисы, а там они уже сами разберутся
источник

AD

Anton Davydov in pro.rb (Ruby/Rails / RU)
так данные все равно нужны одни и те же, другой вопрос, что это разные модели (хоть и об одних и тех же данных)
источник

BO

Black Olive in pro.rb (Ruby/Rails / RU)
Просто вопрос, почему если: can :update, User, id: user.id
то при команде can?(:update, User) выдает true?
источник

DD

Dan Dan in pro.rb (Ruby/Rails / RU)
Ну хорошо, а разные хелперы, путь к изображению, прямо все в отдельные сервисы раскидать?
источник

FK

Fedor Koshel in pro.rb (Ruby/Rails / RU)
ну что-то можно выносить в либы общие, просто модели чаще всего привязаны именно к логике, и их шарить между сервисами странно
источник

FK

Fedor Koshel in pro.rb (Ruby/Rails / RU)
а там где-нибудь рядом глобального правила для всей модели нет?
источник

AD

Anton Davydov in pro.rb (Ruby/Rails / RU)
так хелперы - не модель, пути к изображению что имеется в виду?
источник

BO

Black Olive in pro.rb (Ruby/Rails / RU)
Нет
источник

FK

Fedor Koshel in pro.rb (Ruby/Rails / RU)
Если верить доке
class Ability
 include CanCan::Ability

 def initialize(user)
   can :read, Post, public: true

   if user.present?  # additional permissions for logged in users (they can read their own posts)
     can :read, Post, user_id: user.id

     if user.admin?  # additional permissions for administrators
       can :read, Post
     end
   end
 end
end

То как раз так ограничения и работают
источник