sql >> データベース >  >> RDS >> PostgreSQL

なぜActionView::Template ::Error:Herokuでnil:NilClassの未定義のメソッド `name'を取得するのに、ローカルでは取得しないのですか?

    あなたの更新によると、私はこれを提案します:あなたが投稿を持っているユーザーを削除し、次に彼らの投稿をリストしようとするたびに<%= 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を学ぶためだけに行っていること以上のものである場合、これは確かにありそうなケースです。お役に立てれば。確かに、ユーザーがプロファイルをクリーンアップするための場所を用意せずにプロファイルを削除できるようにすることの落とし穴について考えさせられました。



    1. PHPのMySQL日付フィールドのオプションの月または日

    2. php / mysql Webアプリケーションで悲観的なロックを実装する方法は?

    3. 可能なよりも長い平均行長

    4. サーバーから結果を受信中にトランスポート レベルのエラーが発生しました