将范围写入复杂的多个关联 - Rails 4

时间:2017-02-03 12:36:28

标签: ruby-on-rails

我在编写范围时遇到挑战,该范围显示属于名为live_socials的{​​{1}}的用户创建的category_managementgroup

client_group

以下范围显示category_managementgroup中名为client_group的所有社交用户:

Social.rb
belongs_to :user
scope :live_socials, -> {where(['date >= ?', Date.current])}

CategoryManagementgroup.rb
has_many :users

User.rb
has_many :socials
belongs_to :category_managementgroup
  

我不确定如何扩展范围以显示users.joins(:socials, :category_managementgroup).client_group.flat_map(&:socials)   (未过期的社交)。我试过以下但没有成功:

live_socials
  

我收到以下错误:

users.joins(:socials, :category_managementgroup).client_group.flat_map(&:socials).live_socials

1 个答案:

答案 0 :(得分:1)

尝试在live_socials之前应用flat_map范围,并将以下范围添加到用户模型

scope :live_socials, -> { joins(:socials).where(['socials.date >= ?', Date.current])}