あなたの更新によると、私はこれを提案します:あなたが投稿を持っているユーザーを削除し、次に彼らの投稿をリストしようとするたびに<%= post.user.name %>
この投稿には参照するユーザーがいないため、nilが返されます。
has_many :posts, dependent: :destroy
上記で提案したユーザーモデルで、またはユーザーの削除にいくつかの機能を追加して、ユーザーの投稿を表示しようとしたときのエラーを防ぎます。いくつかの選択肢は次のとおりです。
ユーザーが削除された場合、ユーザーテーブルのその行にある名前とID以外のすべてを削除するだけで、<%= post.user.name %>
を使用できます。 値を返します。
ユーザーが削除されると、ユーザーテーブル情報のすべてを削除し、ユーザーがアカウントを非アクティブ化して他のTumblrの投稿に名前が表示されたときにTumblrが行うのと同じように、「-user-deleted」を追加できます。
DBに「user-deleted」というユーザーを作成し、そのユーザーに、削除されたユーザーからのすべての投稿を継承させることができます。ユーザーコントローラーで、delete
に何かを追加します 投稿のuser_idフィールドを「user-deleted」アカウントに変更するアクション。
または、最後に、post.userが値を返すかどうかを確認し、そうでない場合は、「ユーザーはシステムに存在しません」のようなものを出力することもできます。
もちろん、これはすべて、ユーザーの削除を許可しても投稿を保持するかどうかに依存します。これが単なるクラスプロジェクトや、Railsを学ぶためだけに行っていること以上のものである場合、これは確かにありそうなケースです。お役に立てれば。確かに、ユーザーがプロファイルをクリーンアップするための場所を用意せずにプロファイルを削除できるようにすることの落とし穴について考えさせられました。