2016-08-08 82 views
1

Hallo ich neu zu Schienen und derzeit arbeiten auf Anwendung mit Option, Posts zu mögen, versuche ich, die Aktion von like auf 1 per Post zu begrenzen, aber ich kann nicht herausfinden, wie, Die App enthält keine Benutzer, so dass jeder Post mögen, also denke ich, dass der beste Weg das zu tun mit IP oder Sitzungen ist, kann mir bitte jemand eine Richtlinie geben?Rails - Limit Aktion pro IP-Adresse für Post

My Wie Aktion

def like 
    @post = Post.find(params[:id]) 
    @post.likes += 1 
    @post.save 
    redirect_to root_path 
    end 

Antwort

0

Sie könnten der post.likes machen statt einer ganzen Zahl eine Reihe von IP-Adressen-Attribut, dann überprüfen Sie die Array auf die Existenz der IP des Autors ist, um zu bestimmen, ob sie bereits haben "mochte" den Beitrag.

Für eine besser skalierbare Lösung benötigen Sie einen Mechanismus zum Verknüpfen der "Like" -Aktion mit einem bestimmten User. Sie möchten wahrscheinlich ein Like Modell, das belongs_to ein User und Post, um dies zu erreichen.

+0

Also gibt es keine Möglichkeit, dass ich ohne Benutzer damit umgehen kann, weil das Hauptziel der App ist, ohne Benutzer zu arbeiten ... edit: die Array-Idee kann genau das sein, was ich brauche, danke! – MIkee

+0

In der aktualisierten Antwort finden Sie eine Idee, wie Sie dies ohne ein Benutzermodell erreichen können. –

+0

Hallo Chris, wenn ich die "Likes" in der Datenbank als ein Array anstelle von Int speichern möchte, so muss ich PostrgreSQL verwenden? – MIkee