我有一个名为Project
的模型,其中包含许多Proposals.
Project模型有一个名为winning_proposal_id
现在我有类似的东西可以找到获胜的提案以及提案的has_many:
belongs_to :winning_proposal, :class_name => "Proposal", :foreign_key => "winning_proposal_id"
has_many :proposals, dependent: :destroy
我从中做到:
@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
但这看起来很糟糕。任何人都知道如何从块中引用调用实例变量?
答案 0 :(得分:0)
想出其他感兴趣的人:
has_many :proposals, dependent: :destroy do
def winner
self.first(conditions: {id: proxy_association.owner.winning_proposal_id})
end
end
关键是使用proxy_association.owner
来引用父母。