Несколько пользователей к задаче в Ruby on Rails - PullRequest
0 голосов
/ 10 июня 2018

Я делаю приложение менеджера проектов в Ruby on Rails, и у меня есть много «задач» (например, проблем в GitHub), которым может быть назначено много «пользователей».Например, Джон Смит и Джейн Доу могли бы работать над задачей 23. Вроде как проблемы в GitHub могут иметь несколько меток, но с пользователями вместо меток.

Я новичок в Ruby on Rails иЯ понятия не имею, как создать модель «задач», чтобы она могла ссылаться на нескольких пользователей.Я также не знаю, как сформулировать этот вопрос, и я попытался найти его, но безрезультатно - извините, если это дубликат.

1 Ответ

0 голосов
/ 10 июня 2018

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

  1. has_and_belongs_to_many конфигурация
  2. полная модель, которая объединяет эти две модели вместе

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

Я предлагаю начать с # 1, и вам нужно будет прочитать о ассоциации для реализации любого из вариантов.

Пример:

Предполагая, что у вас есть как модель Users, так и модель Tasks, вы бы создали отношение has_and_belongs_to_many (HABTM) следующим образом:

$ rails g migration CreateUsersTasksJoinTable

Создает файл миграции с именем, аналогичным приведенному ниже.Обновите этот файл соответствующим образом:

# db/migrate/201806XXXXXXXX_create_users_tasks_join_table.rb
class CreateUsersTasksJoinTable < ActiveRecord::Migration[5.1]
  def change
    create_join_table :users, :tasks
  end
end

Как только вы создадите таблицу соединений, вам необходимо обновить ваши модели User и Task как таковые:

# app/models/user.rb
class User < ApplicationRecord
  has_and_belongs_to_many :tasks
end

# app/models/task.rb
class Task < ApplicationRecord
  has_and_belongs_to_many :user
end
...