我正在使用 PublicActivity gem。我正在尝试为一组用户加载相关的活动。我已经在我的用户类中根据他们的文档设置了“活动家”关联,它定义了这一点:
def activist
has_many :activities_as_owner,
:class_name => "::PublicActivity::Activity",
:as => :owner
has_many :activities_as_recipient,
:class_name => "::PublicActivity::Activity",
:as => :recipient
end
我在控制器中的查询是:
@results = @action_plan.users.includes(:activities_as_owner).where(activities: {recipient_id: @action_plan.id, key: "action_plan_role.access_granted" }).references(:activities_as_owner)
这确实急切地加载了活动,但如果用户没有相应的活动,则它不包括用户,这不是我想要的。根据 ActiveRecord 指南,包括 '.references(:activities_as_owner)' 应该使其成为 OUTER 联接而不是 INNER,因此无论他们是否有活动,它都会返回所有用户。代替 ':activities_as_owner',我尝试了 :activities、:activist、:all 等,但我想不出任何办法。
Squeel 或 AREL 的答案也非常受欢迎!