Enligt din uppdatering kommer jag att föreslå detta:Varje gång du tar bort en användare som har inlägg och sedan försöker lista deras inlägg <%= post.user.name %>
kommer att returnera noll eftersom det här inlägget inte längre har en användare att referera till. Du kan antingen använda
has_many :posts, dependent: :destroy
i användarmodellen som jag föreslog ovan, eller så lägger du till någon funktionalitet för att radera användare för att förhindra fel när de försöker se deras inlägg. Några alternativ är:
När en användare raderas kan du bara ta bort allt utom deras namn och id i den raden i användartabellen, vilket gör att du kan ha <%= post.user.name %>
returnera ett värde.
När en användare raderas kan du radera allt i deras användartabellsinformation och lägga till "-user-deleted" efter det ungefär som vad Tumblr gör när en användare avaktiverar sitt konto och deras namn dyker upp i ett inlägg på någon annan Tumblr.
Du kan skapa en användare i databasen som kallas "användare borttagen" och låta den användaren ärva varje inlägg från en användare som raderas. Lägg till något i din delete
i användarkontrollen åtgärd för att ändra fältet user_id i sina inlägg till kontot "användare borttaget".
Eller slutligen kan du bara kontrollera om post.user returnerar ett värde, och om inte bara skriva ut något som "Användaren finns inte längre i systemet"
Detta beror naturligtvis på om du ens vill tillåta användare att raderas men ändå behålla sina inlägg. Det är säkert ett troligt fall om detta är mer än bara ett klassprojekt eller något du gör bara för att lära dig Rails. Hoppas det här hjälper. Det fick mig verkligen att tänka på fallgroparna i att låta användare ta bort sina profiler utan att ha något på plats för att rensa upp efter dem.