Rails как получить доступ к статусу пользователя на уровне проекта - PullRequest
2 голосов
/ 05 октября 2019

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

project.user.status

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

1 Ответ

1 голос
/ 05 октября 2019

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

В этом случае вам необходимо абстрагировать эту связь от дополнительной модели, например, «UserProjectStatus», которая будет связана как с пользователем, так и с проектом. Вы можете сделать это, используя has_many, через ассоциацию. В результате получится что-то вроде:

class Project < ApplicationRecord
  has_many :user_project_statuses
  has_many :users, through :user_project_statuses
end

class UserProjectStatus < ApplicationRecord
  belongs_to :user
  belongs_to :project
end

class User < ApplicationRecord
  has_many :user_project_statuses
  has_many :projects, through :user_project_statuses
end

Хороший обзор этого множества других ассоциаций Rails ActiveModel можно найти на https://guides.rubyonrails.org/association_basics.html#the-has-one-through-association.

Надеюсь, это поможет!

...