0
當調用實例變量我有一個叫Project
模型有很多Proposals.
引用延伸的has_many
項目模型有一個屬性,叫做winning_proposal_id
現在,我有這樣的事情找到了獲勝的提案,以及作爲提案的has_many:
從我做的:
@project.winning_proposal
以引用獲勝的提案,但我並不是真正的粉絲。
我希望會是這樣的:
@project.proposals.winner
,我認爲它只是清潔。要做到這一點,但是,我需要能夠引用從塊內winning_proposal_id實例變量:
has_many :proposals, dependent: :destroy do
def winner
self.where(id: winning_proposal_id).first
end
end
,但不起作用。我相信我可以這樣做:
has_many :proposals, dependent: :destroy do
def winner
self.where(id: self.project.first.winning_proposal_id).first
end
end
但這似乎是kludgy。任何人都知道如何從塊內引用調用實例變量?
有趣。這可能是品味的問題,但我更喜歡@ project.winning_proposal方式。它具有遵循德米特法則的額外優勢http://en.wikipedia.org/wiki/Law_of_Demeter –
正確。我只是找到這個清潔工。使得像project.proposals.winner和project.proposals.loser這樣的事情變得更容易 – JoshL