将热切加载添加到自定义has_many关系

时间:2014-10-07 13:38:39

标签: sql ruby-on-rails activerecord

组和用户通过表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

1 个答案:

答案 0 :(得分:3)

您的表名可能是'user_roles'而不是'user_role'。将where子句中的表名更改为“user_roles”。

def members(role)
  self.users.includes(:user_roles).where("user_roles.role = ?", role)
end