在没有庞大的 if/else 结构的情况下,我很难概念化如何以最好的方式做到这一点。我知道我可以那样做,但我试图将它抽象成方法,我迷路了。
upvote = 1
no vote = 0
downvote = -1
基本上,一个人可以点击赞成或反对按钮。
如果他们点击 upvote 并且他们当前的投票是 upvote,它会“取消投票”帖子并将其设置为零
如果他们点击了downvote并且他们当前的投票是upvote,它会将其切换为downvote
如果他们的投票为零,并且他们点击了upvote,它将投票设置为1
反对票的情况正好相反
这是我到目前为止所拥有的,但它不考虑在您已经单击 upvote 之后单击 upvote .. 而不是将其设置为 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