私は、ユーザ< -Postsの1対多の関連性を持っています。シンプルなレールに関する質問
一部の投稿は関連付けられていますが、その他のユーザーIDはnil
です。
の場合は、ERBに、私が行います
post.user_id? post.user.email
記事の繰り返し処理を行う場合、私は
undefined method `email' for nil:NilClass
を取得します。なぜ私の最初の条件はこれを守っていないのですか?
私は、ユーザ< -Postsの1対多の関連性を持っています。シンプルなレールに関する質問
一部の投稿は関連付けられていますが、その他のユーザーIDはnil
です。
の場合は、ERBに、私が行います
post.user_id? post.user.email
記事の繰り返し処理を行う場合、私は
undefined method `email' for nil:NilClass
を取得します。なぜ私の最初の条件はこれを守っていないのですか?
あなたの構文が意味をなさないと思います。試してみてください:
post.user.email if post.user_id?
または
post.user_id? ? post.user.email : nil
または
if post.user_id?
post.user.email
end
または
post.user.try(:email)
それらのすべてが動作するはずです。注:post.user.present?
または!post.user.nil?
を使用することもできます。どちらもidをチェックするよりもきれいです。
それはより多くの意味になりように、あなたは少しそれを言い換えることができる必要があります:それはあなたが投稿何から条件付き似ていないように私は非常に、あなたのコードを理解していない
<%= post.user.email if post.user %>
を、しかし、上記のERB声明はそのトリックを行うべきです。
編集:条件文では、Rubyがnilオブジェクトをfalseに評価するため、user.nil?
をチェックする必要はありませんが、これは完全に有効ですが、追加する必要があります。これにより、上記のような簡単で簡単な条件文を作成することができます。