Rails 5.2 строительная ассоциация - PullRequest
0 голосов
/ 09 января 2019

Цель состоит в следующем:

«пользователю» принадлежит «комната», в которую он может добавить «актив» напрямую или через «проект» и создать команду для доставки «актива».

Я немного растерялся из-за принадлежности и полиморфных ассоциаций.

Это живописное представление различных моделей: associations

Я планирую сделать следующее:

class Room < ApplicationRecord
    belongs_to :user
    has_many :projects
end

class User < ApplicationRecord
    has_many :rooms
    has_many :projects
    has_many :teams
end

class Team < ApplicationRecord
   has_many :projects, dependent: :destroy
   has_many :users

   accepts_nested_attributes_for :users, allow_destroy: true
end

class Project < ApplicationRecord
  belongs_to :team
  belongs_to :user
  belongs_to :room

  accepts_nested_attributes_for :team
end

class Asset < ApplicationRecord
  belongs_to :project
  belongs_to :room
end

Комментарии:
1 ° Я использую опцию зависимого: уничтожить, чтобы уничтожить команды в случае разрушения проекта .
2 ° Отношения между командой (1) и проектами (многими) можно перевести на отношения 1 к 1, если это поможет .
3 ° Я хотел бы сохранить возможность создания актива через проект или напрямую без проекта .

Вопрос
Я иду в правильном направлении? Я не уверен, как привести различные модели в действие.
например, создание нового проекта через контроллер проекта:

<%= link_to new_project_path, class:'link' do%> on

@project = current_user.room.projects.build

возвращает ошибку константы инициализации.

Могу ли я спросить, какой тип ассоциаций вы бы использовали?

...