0

所以我有一個叫做Primer的模型has_many:amplicons。然而,在我的數據庫中,Amplicons表將引物ID存儲在forward_primer_id或reverse_primer_id列中(即不是默認的primer_id對照)。在Primer模型中,我想直接使用Rails在這兩列的Amplicons表中搜索primer_id,並將這些擴增子與該引物相關聯。我想我可以在Primer模型中編寫一個方法來做到這一點,但是還有更多的Rails方法嗎?Rails ActiveRecord getter覆蓋

在此先感謝!

回答

1

OPTION 1

class Primer 
    has_many :forward_amplicons, class_name: "Amplicon", foreign_key: :forward_primer_id 
    has_many :reverse_amplicons, class_name: "Amplicon", foreign_key: :reverse_primer_id 

    def amplicons 
    self.forward_amplicons + self.reverse_amplicons 
    end 
end 

OPTION 1所返回的數組,所以你不能鏈更多的條件下,即不能調用primer.amplicons.where(...)

OPTION 2

class Primer 
    def amplicons 
    Amplicon.where('forward_primer_id = ? OR reverse_primer_id = ?', self.id, self.id) 
    end 
end 

OPTION 2點返回的關係,所以你可以鏈接更多的條件。

+0

謝謝,我認爲選項1,但我沒有想到做這樣的選項2。好建議。 –

0
has_many :forward_amplicons, class_name: "Amplicon", foreign_key: "forward_primer_id" 
has_many :reverse_amplicons, class_name: "Amplicon", foreign_key: "reverse_primer_id"