我的情况是管理员可以提出问题。它可以分配给公司,组(公司部门)或特定用户。
现在我要做的就是获得可以与用户关联的所有问题。这意味着如果用户是组的一部分,那么该组中的问题也适用于该用户。
我尝试这样做的方式是:
<% 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
目标主要是获取属于用户的所有问题的数组。
答案 0 :(得分:0)
您的错误正在发生,因为结果数组是问题和问题数组的混合。
我会这样做:
all_questions = (current_user.questions + current_user.groups.map(&:questions).flatten).uniq