属于用户的不同关联中的所有元素的数组

时间:2015-10-14 08:07:27

标签: ruby-on-rails

我的情况是管理员可以提出问题。它可以分配给公司,组(公司部门)或特定用户。

现在我要做的就是获得可以与用户关联的所有问题。这意味着如果用户是组的一部分,那么该组中的问题也适用于该用户。

我尝试这样做的方式是:

<% personal_questions = current_user.questions %>

<% group_questions = [] %>
<% current_user.groups.each do |group| %>
  <% group_questions.push(group.questions) %>
<% end %>

<% all_questions = personal_questions + group_questions %>

<%=  all_questions.map(&:name) %>

现在它似乎无法打印出所有问题,它打印出个人问题,但对于小组,它只是在我将它们映射出来时说出“问题”。

我的协会是:

用户:

  # groups
  has_many :group_memberships
  has_many :groups, through: :group_memberships
  # question
  has_many :question_participants, as: :questionable
  has_many :questions, through: :question_participants

问题:

 has_many :users, through: :question_participants,
                   source: :questionable, source_type: 'User'
  has_many :groups, through: :question_participants,
                    source: :questionable, source_type: 'Group'

组:

  # users
  has_many :group_memberships
  has_many :users, through: :group_memberships
  # questions
  has_many :question_participants, as: :questionable
  has_many :questions, through: :question_participants

目标主要是获取属于用户的所有问题的数组。

1 个答案:

答案 0 :(得分:0)

您的错误正在发生,因为结果数组是问题和问题数组的混合。

我会这样做:

all_questions = (current_user.questions + current_user.groups.map(&:questions).flatten).uniq