【问题标题】:Adding eager loading to custom has_many relationships向自定义 has_many 关系添加即时加载
【发布时间】:2014-10-07 22:05:41
【问题描述】:

组和用户通过表 user_roles 上的关系具有 has_many,它指定用户在每个组中的角色(待定、成员、管理员等)。对于给定的组,我如何返回与该组中特定角色匹配的所有用户,以便代码是 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

【问题讨论】:

  • 我假设 user_roles 是表的名称,而不是 user_role。可能添加一个 s 可以解决您的问题。

标签: sql ruby-on-rails activerecord


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多