从ActiveRecord关系访问所有子模型

时间:2013-09-29 11:41:02

标签: ruby-on-rails ruby ruby-on-rails-4

我想写这样的东西

User.groups.members.addresses

我需要的是用户有权访问的所有地址的数组。如果用户分为两组,每组有2个唯一成员,其中包含唯一地址,我想要一个包含4个地址的数组

在rails 4上使用Ruby

1 个答案:

答案 0 :(得分:1)

您应该能够在地址模型中添加范围,只需在其中添加一些连接即可。没有测试过,但它应该在正确的轨道上。

class Address 
  scope :by_user, -> user { joins(:member).joins(:group).where(user: {id: user.id})}}
end

用法:

Address.by_user(@user)