2015-10-20 53 views
0

我有一个多态关联,我现在要做的就是获取所有这些关系,但是按他们所属的关系对它们进行细分。多态关联中的段对象

我的问题:

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


# question can be assigned to Company, Group, User 
class QuestionParticipant < ActiveRecord::Base 
    belongs_to :question 
    belongs_to :questionable, polymorphic: true 
end 

现在我想要做的是通过属于用户所有问题,或属于一个组的所有问题f.ex循环。我如何做到这一点。

回答

0

使用范围。 在你question.rb,添加以下内容:

scope :user_questions, -> { includes(:question_participants).where(question_participants: { source_type: 'User' }) } 
scope :group_questions, -> { includes(:question_participants).where(question_participants: { source_type: 'Group' }) } 

然后你就可以访问或者通过Question.user_questionsQuestion.group_questions