我有两个模型User和Project,它们在has_and_belongs_to_many关联中用户模型具有列状态我可以访问项目中用户的状态,例如
project.user.status
但是用户可以在不同的项目中,我希望他的状态在项目级别上而不是在其ID上
如果我正确理解了您的问题,那么问题在于,您需要将用户的状态与该用户可能关联的多个项目之一相关联,但是您要将一个状态与一个用户而不是项目相关联。
在这种情况下,您需要将此关联抽象到另一个模型,例如将与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关联都有很好的概述。
希望这会有所帮助!