Rails has_many通过额外的属性

时间:2015-02-26 12:39:58

标签: ruby-on-rails attributes has-many-through

我有以下关系:

# Project
has_many :teammates
has_many :users, through: :teammates

# User
has_many :teammates
has_many :projects, through: :teammates

# Teammate
belongs_to :user
belongs_to :project

队友表有一个“角色”字段,告诉用户该项目中的角色。 这就是我如何使用角色在DB中保存队友:

project.teammates.create(:user => current_user, :role => 10)

所以这是有效的。现在我要做的是从特定项目中获取所有用户,所有用户都有一个角色字段,告诉他们在该项目中有什么角色。

这可能吗?我读了一些帖子,谈到将attribute_accessible添加到用户模型中,但不再在rails 4中了。

1 个答案:

答案 0 :(得分:0)

好的,所以我找到了解决方案here

这有效

has_many :users, -> { select('users.*, teammates.role as teammate_role') }, through: :teammates