Дважды ссылаться на одну и ту же модель с разными внешними ключами или создать связь «многие ко многим» - PullRequest
0 голосов
/ 16 января 2019

У меня есть приложение в Rails, где я создаю модель с именем User и другую с именем Task.

Пользователь модели имеет enum для ролей, что означает, что у меня может быть Пользователь, который является клиентом или разработчиком:

require 'bcrypt'

class User < ApplicationRecord
  has_many :tasks

  enum :role => [
    :client, 
    :developer
  ]

  has_secure_password

  validates_uniqueness_of :document, :email
  validates_presence_of :birthdate, 
                        :credits,
                        :document, 
                        :email, 
                        :name, 
                        :neighborhood, 
                        :phone, 
                        :street, 
                        :street_number, 
                        :zipcode
end

Задачей модели может управлять клиент или разработчик:

class Task < ApplicationRecord
  enum :priority => [
    :low,
    :medium,
    :high
  ]
  validates_presence_of :description, :title
end

Я почти уверен, что было бы лучше, если бы я разделил таблицу User на две другие таблицы, например, под названием Client и Developer, но их атрибуты совпадают, и в будущем я хочу иметь возможность быстро измените пользователя с ролью :client на роль :developer, не создавая запись в таблице Developer и не удаляя другую в таблице Client.

У меня такой вопрос: если подумать о передовой практике, лучше ли вставить два поля модели Task, одно из которых называется client_id, а другое - developer_id и использовать Наследование в одной таблице или создать отношение «многие ко многим» между заданием модели и пользователем модели и просто проверить роль каждого пользователя, на которого ссылается задание?

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