2012-10-02 68 views
0

我有以下2个named_scopes:联盟named_scopes

named_scope :scope1, lambda { |pi_id| 
    { :select => "DISTINCT REF_PRO.*", 
     :joins => "INNER JOIN LNK_PRO ON LNK_PRO.PR_PRO_FK = REF_PRO.RPR_ID 
       INNER JOIN EMI_SUBMISSION on EMI_SUBMISSION.SUB_ID = LNK_PRO.PR_SUBMISSION_FK 
       INNER JOIN EMI_PERSON on EMI_PERSON.PER_ID = EMI_SUBMISSION.SUB_PI_FK ", 
     :conditions=>["EMI_PERSON.PER_ID = ? ", pi_id], 
     :group => "REF_PRO.RPR_ID" 

    } 
    } 


    named_scope :scope2, lambda { |pi_id| 
    { :select => "REF_PRO.*", 
     :joins => "INNER JOIN REF_USER ON REF_USER.USR_ID = REF_PRO.RPR_CREATED_BY 
       INNER JOIN LNK_USER_PI on LNK_USER_PI.USP_USER_FK = REF_USER.USR_ID ", 
     :conditions=>["LNK_USER_PI.USP_PI_ID = ? ", pi_id] 
    } 
    } 

我需要加入他们的结果。

有没有办法结合2结果?如果不是,我怎样才能修改一个named_scope,以便它返回上述命名范围的组合结果?

非常感谢您的帮助

+0

链接范围缩小永远的搜索结果。 ARel尚未解决工会问题。有一些黑客在那里。或者,您可能已经想到了这一点,您可以将每个范围的结果连接起来,并在其上调用'.uniq'。不是很优雅。 –

回答

0

你可以这样做:

Model.scope1+Model.scope2