组和用户通过表user_roles上的关系具有has_many,它指定了用户在每个组中的角色(pending,member,admin等)。对于给定的组,我如何返回与该组中的特定角色匹配的所有用户,使得代码是DRY并且渴望加载适当的关联?
class Group < ActiveRecord::Base
has_many :user_roles, dependent: :destroy
has_many :users, through: :user_roles
def members(role)
self.users.includes(:user_roles).where("user_role.role = ?", role)
# Returns following error message:
# PG::UndefinedTable: ERROR: missing FROM-clause entry for table "user_role"
end
答案 0 :(得分:3)
您的表名可能是'user_roles'而不是'user_role'。将where子句中的表名更改为“user_roles”。
def members(role)
self.users.includes(:user_roles).where("user_roles.role = ?", role)
end