2017-05-03 5 views
1

Ich habe eine Tabelle mit Post, in der sich Benutzer in der Anwendung einloggen und einen Artikel posten können. Im Idealfall möchte ich, dass Benutzer nur ihren Post und keinen anderen bearbeiten. Bisher habe ich es so, dass Benutzer Beiträge bearbeiten, aber auch andere bearbeiten können.Nur eingeloggten/aktuellen Benutzern erlauben, ihren eigenen Beitrag zu bearbeiten

Dies ist, was ich glaube, ich brauche von index.html.erb Datei reparieren lassen:

<td><%= review.review %> (<% if current_user%><%= link_to 'Edit', edit_review_path(review)%><%end%>)</td> 
+0

Haben Sie versucht, 'current_user' in der Instanz @user in Ihrem Controller zu überprüfen? – Daltron

Antwort

1

Sie so etwas wie verwenden:

<% if user_signed_in? && current_user.id == @review.user_id %> 

Welche sagen, prüfen, ob der Benutzer ist bereits angemeldet, und überprüfen Sie, ob die current_user der Besitzer der review ist, überprüfen Sie die current_user ID und die id vom Besitzer einer solchen Überprüfung.

So können Sie versuchen:

<td> 
    <%= review.review %> 
    <% if user_signed_in && current_user.id == review.user_id %> 
    <%= link_to 'Edit', edit_review_path(review) %> 
    <% end %> 
</td> 

Sie können auch eine Methode erstellen ein als before_action verwenden für das Spiel zwischen dem current_user und dem Eigentümer des review zu überprüfen, aber ich denke, die Ansicht „Validierung“ könnte genug sein.

+0

Das ist die richtige Idee und es hat funktioniert! – roram

+0

Froh, Ihnen zu helfen! –

Verwandte Themen