sql >> Database >  >> RDS >> PostgreSQL

Waarom krijg ik ActionView::Template::Error:undefined methode `name' for nil:NilClass op Heroku maar niet lokaal

Volgens uw update zal ik dit voorstellen:Elke keer dat u een gebruiker verwijdert die berichten heeft en vervolgens probeert om hun berichten weer te geven <%= post.user.name %> zal nul retourneren omdat dit bericht niet langer een gebruiker heeft om naar te verwijzen. U kunt ofwel de

has_many :posts, dependent: :destroy 

in het gebruikersmodel zoals ik hierboven suggereerde, of je voegt functionaliteit toe aan het verwijderen van gebruikers om fouten te voorkomen bij het bekijken van hun berichten. Enkele keuzes zijn:

Wanneer een gebruiker wordt verwijderd, kunt u gewoon alles verwijderen, behalve hun naam en id in die rij van de gebruikerstabel, zodat u <%= post.user.name %> krijgt. een waarde teruggeven.

Wanneer een gebruiker is verwijderd, kun je alles in hun gebruikerstabelgegevens verwijderen en "-user-deleted" toevoegen nadat het een beetje lijkt op wat Tumblr doet wanneer een gebruiker zijn account deactiveert en zijn naam verschijnt in een bericht op een andere Tumblr.

U kunt een gebruiker in de database aanmaken met de naam "door gebruiker verwijderd" en deze gebruiker elk bericht laten erven van een gebruiker die is verwijderd. Voeg in de gebruikerscontroller iets toe in uw delete actie om het veld user_id in hun berichten te wijzigen in het "door gebruiker verwijderde" account.

Of u kunt tot slot gewoon controleren of post.user een waarde retourneert, en zo niet, gewoon iets afdrukken als "De gebruiker bestaat niet meer in het systeem"

Dit is natuurlijk allemaal afhankelijk van het feit of je zelfs wilt dat gebruikers worden verwijderd, maar hun berichten nog steeds behouden. Dat is zeker een waarschijnlijk geval als dit meer is dan alleen een klasproject of iets dat je alleen maar doet om Rails te leren. Ik hoop dat dit helpt. Het heeft me zeker aan het denken gezet over de valkuilen om gebruikers toe te staan ​​hun profielen te verwijderen zonder dat er iets is om na hen op te ruimen.



  1. Parameters retourneren in Oracle SQL insert-instructies

  2. Enkele aanhalingstekens ontsnappen in PHP/MySQL invoegen werkt niet

  3. SQL:rijen selecteren waar de kolomwaarde is gewijzigd ten opzichte van de vorige rij

  4. MySQL Simple Select-query is traag