Според вашата актуализация ще предложа следното:Всеки път, когато изтриете потребител, който има публикации, и след това се опитайте да посочите техните публикации <%= post.user.name %>
ще върне нула, защото тази публикация вече няма потребител, към когото да се обърне. Можете да използвате или
has_many :posts, dependent: :destroy
в потребителския модел, както предложих по-горе, или добавяте някаква функционалност към изтриването на потребители, за да предотвратите грешки, когато се опитвате да видите техните публикации. Някои възможности за избор са:
Когато даден потребител бъде изтрит, можете просто да изтриете всичко освен неговото име и идентификатор в този ред на потребителската таблица, което ще ви позволи да имате <%= post.user.name %>
върне стойност.
Когато даден потребител бъде изтрит, можете да изтриете всичко в информацията за неговата таблица с потребители и да добавите „-user-deleted“ след нещо подобно на това, което прави Tumblr, когато потребител деактивира акаунта си и името му се покаже в публикация в друг Tumblr.
Можете да създадете потребител в DB, наречен "user-deleted" и този потребител да наследи всяка публикация от потребител, който е изтрит. В потребителския контролер добавете нещо във вашия delete
действие за промяна на полето user_id в техните публикации към акаунта „изтрит потребител“.
Или накрая можете просто да проверите дали post.user връща стойност и ако не просто да отпечатате нещо като „Потребителят вече не съществува в системата“
Това зависи, разбира се, от това дали дори искате да позволите на потребителите да бъдат изтривани, но все пак да запазите техните публикации. Това със сигурност е вероятен случай, ако това е нещо повече от класен проект или нещо, което правите само за да научите Rails. Надявам се това да помогне. Определено ме накара да се замисля за клопките в това да се позволи на потребителите да изтриват своите профили, без да има нещо, което да почиства след тях.