列出如何在项目级别访问用户状态

问题描述 投票:2回答:1

我有两个模型User和Project,它们在has_and_belongs_to_many关联中用户模型具有列状态我可以访问项目中用户的状态,例如

project.user.status

但是用户可以在不同的项目中,我希望他的状态在项目级别上而不是在其ID上

ruby-on-rails model-view-controller ruby-on-rails-5 associations
1个回答
1
投票

如果我正确理解了您的问题,那么问题在于,您需要将用户的状态与该用户可能关联的多个项目之一相关联,但是您要将一个状态与一个用户而不是项目相关联。

在这种情况下,您需要将此关联抽象到另一个模型,例如将与User和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

https://guides.rubyonrails.org/association_basics.html#the-has-one-through-association上的许多其他Rails ActiveModel关联都有很好的概述。

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.