我有困難構思如何以最好的方式做到這一點可能,而不必一個巨大的if/else結構。我知道我可以這樣做,但我想把它抽象成方法,我迷路了。搞清楚/重構這個的if/else進行投票系統
upvote = 1
no vote = 0
downvote = -1
基本上,一個人可以打upvote或downvote按鈕。
如果他們點擊給予好評和他們目前的投票給予好評,這unvotes「後,將其設爲零
,如果他們點擊downvote和他們目前的投票給予好評,它切換它downvote
如果他們的投票是零,他們點擊給予好評,它會將票對1
逆是downvote
真正的這是我迄今爲止,但它不佔點擊給予好評,你已經點擊給予好評後, .. inst ead將其設置爲0將其設置爲-1。
我得到的問題,我只是有困難,搞清楚如何寫呢
def update_vote(upvote_or_downvote)
self.active_vote? ? self.value = 0 : self.alternate_vote
end
def active_vote?
self.value != 0
end
def alternate_vote
self.value *= -1
end
「如果他們點擊給予好評和他們目前的投票給予好評,這unvotes「的帖子,並將其設置爲零」 - 這並未對我來說看起來很直觀。我希望點擊downvote會將其設置爲零,因此我必須點擊downvote兩次以將其設置爲downvote。 – ghoppe
我同意不同意。我只是遵循reddit和其他投票網站的做法。 – Tallboy
我不會想到點擊Upvote取消我的投票。我會點擊投票。看起來你對封裝你的用戶界面邏輯感到困難,因爲它沒有任何意義。 –