巨大なif/else構造を持たずに、これを可能な限り最善の方法で行う方法を概念化するのに苦労しています。私はそれがそのようにできることを知っていますが、私はそれをメソッドに抽象化しようとしていて、迷子になっています。
upvote = 1
no vote = 0
downvote = -1
基本的に、人は賛成または反対のボタンを押すことができます。
彼らが賛成票をクリックし、現在の投票が賛成票である場合、投稿は「投票解除」され、ゼロに設定されます
彼らが反対票をクリックし、現在の投票が賛成票である場合、反対票に切り替わります
彼らの投票がゼロで、彼らが賛成票をクリックした場合、それは投票を1に設定します
反対票の場合は逆になります
これは私がこれまでに持っているものですが、すでに賛成票をクリックした後に賛成票をクリックすることは考慮されていません。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