У меня есть модель под названием 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