Ho tre modelli: Utente, Commento e Voto positivo. User-to-Comment ha una relazione uno-a-molti, Commento-a-Up ha una relazione uno-a-molti e User-to-Up ha una relazione uno-a-molti.Prevenire il richiamo del modello upvote per ogni commento
Voglio fare qualcosa di simile al upvoting fatto su Stackoverflow. Pertanto, quando si aumenta/diminuisce la freccia, la freccia viene evidenziata e rimane evidenziata anche se si aggiorna la pagina o si torna alla pagina giorni/settimane dopo.
Attualmente sto facendo questo:
<% if Upvote.voted?(@user.id, comment.id) %>
<%= link_to '^', ... style: 'color: orange;'%>
<% else %>
<%= link_to '^', ... style: 'color:black;'%>
<% end %>
in cui il metodo voted?
assomiglia a questo:
def self.voted?(user_id, comment_id)
find_by(comment_id: comment_id, user_id: user_id).present?
end
Quindi, se ho 10 commenti su una pagina, questo verrà caricato un upvote dal mio database 10 volte, solo per verificare se esiste!
Ci deve essere un modo migliore per farlo, ma penso che il mio cervello abbia smesso di funzionare, quindi non posso pensare a nessuno.
Probabilmente non dovrebbe essere chiamata votato sul 'Upvote 'classe. Se pensi all'azione del voto, questo non è qualcosa che fa il 'commento', ma piuttosto l'utente. Vorrei spostare il metodo nella classe 'User'. – kobaltz
In una nota a margine, invece di fare 'find_by(). Presente?', Potrebbe essere meglio fare 'esiste?()' –