if/elseの巨大な構造を持たずに可能な限り最良の方法でこれを行う方法を概念化するのが難しいです。私はそうすることができることを知っていますが、私はそれを抽象化しようとしていて、私は迷っています。投票システムのために/ if/elseを考案/リファクタリングする
upvote = 1
no vote = 0
downvote = -1
基本的に、人はupvoteまたはdownvoteボタンを押すことができます。彼らはupvoteとその現在の投票が、それはunvotes "ポストupvoteであり、彼らはdownvoteをクリックして、それらの現在の投票がupvoteである場合には、ゼロ
に設定しますクリックすると
は、それがdownvoteするためにそれを切り替え
彼らの投票はゼロであり、彼らはupvoteをクリックした場合、それは1
に投票を設定し、逆にdownvote
のために真であるこれは私がこれまで持っているものですが、あなたはすでにupvoteをクリックした後にそれがupvoteクリックのアカウントをdoesntの.. inst 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
「彼らはupvoteとその現在の投票が、それはunvotes "ポストupvoteでクリックして、それをゼロに設定した場合、」 - このdoesnのを私は直感的に思える。私はdownvoteをクリックすると0になるので、downvoteをdownvoteに設定するには2回クリックしなければならないと思います。 – ghoppe
私は同意しないことに同意します。私はちょうどredditと他の多くの投票サイトがしているものに従っています。 – Tallboy
アップヴォートをクリックして投票をキャンセルするとは思いません。私は投票をクリックします。あなたのUIロジックをカプセル化しようとするあなたの苦労は、本当に意味をなさないからです。 –