sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvorfor får jeg ActionView::Template::Fejl:udefineret metode `navn' for nil:NilClass på Heroku, men ikke lokalt

I henhold til din opdatering vil jeg foreslå dette:Hver gang du sletter en bruger, der har indlæg og derefter prøver at liste deres indlæg <%= post.user.name %> returnerer nul, fordi dette indlæg ikke længere har en bruger at henvise til. Du kan enten bruge

has_many :posts, dependent: :destroy 

i brugermodellen som jeg foreslog ovenfor, eller du tilføjer nogle funktioner til sletning af brugere for at forhindre fejl, når de prøver at se deres indlæg. Nogle valgmuligheder er:

Når en bruger er slettet, kan du bare slette alt undtagen deres navn og id i den række i brugertabellen, hvilket vil tillade dig at have <%= post.user.name %> returnere en værdi.

Når en bruger er slettet, kan du slette alt i deres brugertabelinfo og tilføje "-user-deleted" efter det, ligesom det Tumblr gør, når en bruger deaktiverer deres konto, og deres navn dukker op i et indlæg på en anden Tumblr.

Du kan oprette en bruger i DB kaldet "bruger-slettet" og få denne bruger til at arve hvert indlæg fra en bruger, der er slettet. Tilføj noget i din delete i brugercontrolleren handling for at ændre user_id-feltet i deres indlæg til "user-deleted"-kontoen.

Eller endelig kan du bare tjekke om post.user returnerer en værdi, og hvis ikke bare udskrive noget som "Brugeren findes ikke længere i systemet"

Alt dette afhænger selvfølgelig af, om du overhovedet vil tillade, at brugere bliver slettet, men stadig beholde deres indlæg. Det er bestemt et sandsynligt tilfælde, hvis dette er mere end blot et klasseprojekt eller noget, du gør bare for at lære Rails. Håber dette hjælper. Det fik mig bestemt til at tænke på faldgruberne ved at tillade brugere at slette deres profiler uden at have noget på plads til at rydde op efter dem.



  1. Sådan deaktiveres plugins fra WordPress-databasen

  2. bestil efter XXX sorter efter ASC eller DESC, dynamisk bestilling, mysql...

  3. Opretter du et clustered-indeks i Oracle ved hjælp af en IOT? Forvirring

  4. Hvordan kan man vælge alle poster undtagen de første 3 poster?