我使用thumbs_up gem在我的應用中允許「喜歡」。允許用戶使用Rails中的thumbs_up gem'切換'up_vote和down_vote
寶石包括該代碼,以確保一個用戶不能兩次投票 -
Code '1'
# Comment out the line below to allow multiple votes per user.
validates_uniqueness_of :voteable_id, :scope => [:voteable_type, :voter_type, :voter_id]
但我希望我的用戶能夠「up_vote」一次,然後「down_vote」如果他們碰巧喜歡通過錯誤(爲了用戶體驗)。我試圖將範圍更改爲:
validates_uniqueness_of :voteable_id, :scope => [:voteable_type]
但是,這將允許用戶'up_vote'連續兩次。相反,如果可投票對象已經'up_vote',用戶應該只能'down_vote',反之亦然。
我能想到在我看來,使用條件這樣做,因爲這樣的:
<% if !current_user.voted_for?(voteable_name) %>
<%= link_to('Like', vote_up_question_answer_path(voteable_name), :method => :post) %>
<% else %>
<br>
<%= link_to('Unlike', vote_down_question_answer_path(voteable_name), :method => :post) %>
<% end %>
而且註釋掉碼「1」,但有沒有更好的辦法,使用戶僅允許「切換'通過控制器的投票之間?
謝謝。
爲什麼不檢查gem acts_as_votable它具有內置的功能,它也支持加權投票。 –
@CoreyGibson謝謝,我也瀏覽過那個寶石,我想我會在閱讀完寶寶之後再進行切換(寶石最近出現了另一個錯誤)。 :) – sofarsophie