Üç modelim var: Kullanıcı, Yorum ve Yorum. Kullanıcıdan Yorum bire-bir ilişki vardır, Yorum-to-Upvote bire-çok ilişkisi vardır ve Kullanıcı-to-Upvote bire-çok ilişkisi vardır.Her yorum için tavsiye edilen modelin kullanılmasını önleyin
Yığınlama akışına benzer bir işlem yapmak istiyorum. Bu nedenle, sayfayı yenilediğinizde/düşürdüğünüzde, sayfayı yenilediğinizde veya sayfalar/haftalar sonra tekrar gelse bile, ok vurgulanacak ve vurgulanacaktır.
Şu anda yapıyorum:<% if Upvote.voted?(@user.id, comment.id) %>
<%= link_to '^', ... style: 'color: orange;'%>
<% else %>
<%= link_to '^', ... style: 'color:black;'%>
<% end %>
voted?
yöntem şöyle burada:
def self.voted?(user_id, comment_id)
find_by(comment_id: comment_id, user_id: user_id).present?
end
Bir sayfada 10 yorumlarınız varsa Yani, bu benim veritabanından bir upvote yükleyecektir 10 kez, sadece var olup olmadığını kontrol etmek için!
Bunu yapmak için daha iyi bir yol olmalı, ama bence beynim çalışmayı bıraktı, bu yüzden hiç düşünemiyorum.
'upvote oylanacak kontrolörü
Ve görünümde de Sonra
sınıf Oylama eylemini düşünürseniz, bu 'yorum'un yaptığı bir şey değil,' kullanıcı 'gibi bir şeydir. Yöntemi "Kullanıcı" sınıfına taşıyacağım. – kobaltzBir yan notta, 'find_by(). Present [yerine] yapmak yerine, var olanı yapmak daha iyi olabilir?()' –