在没有庞大的if/else结构的情况下,我很难概念化如何以尽可能好的方式做到这一点我知道我可以那样做,但我试图把它抽象成方法,我迷路了。
upvote = 1
no vote = 0
downvote = -1
基本上,一个人可以按向上或向下的投票按钮。
如果他们点击upvote并且他们当前的投票是upvote,它将取消对帖子的保护并将其设置为零
如果他们点击downtvote并且他们当前的投票是upvote,它就会切换到downtvote
如果他们的投票为零,并且他们单击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
最佳答案
有很多方法可以做到这是一个。我想上下投的票数是+1,下投的票数是-1。不要把事情复杂化。
def update_vote(up_or_down)
self.value = self.value == up_or_down ? 0 : up_or_down
end
如果你这样想逻辑,很简单:
如果用户点击相同的东西,重置为零。否则将其设置为单击的值。