Цель состоит в следующем:
«пользователю» принадлежит «комната», в которую он может добавить «актив» напрямую или через «проект» и создать команду для доставки «актива».
Я немного растерялся из-за принадлежности и полиморфных ассоциаций.
Это живописное представление различных моделей:
Я планирую сделать следующее:
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
возвращает ошибку константы инициализации.
Могу ли я спросить, какой тип ассоциаций вы бы использовали?