Рельсы - Владелец данных - Пользователь, или компания (или группа) - PullRequest
1 голос
/ 27 апреля 2020

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

Обычно у меня есть поле user_id (модель пользователя) в каждой модели для сохранение владельца ...

Какие есть варианты реализации для этого?

Как мне это спроектировать?

Должен ли я добавить еще одно поле в модели? владелец? Как я могу использовать user_id (user_model) или company_id (модель компании)?

Данные в приложении могут быть:

  • Персональные данные указанного c пользователя
  • Данные компании, которые отделены от Персональных данных. Конечно, данные компании также создаются определенным пользователем, который является членом (с определенной ролью) компании ...

Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 27 апреля 2020

это можно сделать с полиморфными c ассоциациями, у вас есть модель, которая может принадлежать более чем одной модели с одинаковыми отношениями, см. Этот пример

class Picture < ApplicationRecord
  belongs_to :imageable, polymorphic: true
end

class Employee < ApplicationRecord
  has_many :pictures, as: :imageable
end

class Product < ApplicationRecord
  has_many :pictures, as: :imageable
end

, чтобы это работало, вам нужно создайте imageable_id и imageable_type на своей картинной таблице, для этого примера.

Вы можете проверить больше информации об этом в документации рельсов

...