2011-07-13 5 views
1

私は、ユーザ< -Postsの1対多の関連性を持っています。シンプルなレールに関する質問

一部の投稿は関連付けられていますが、その他のユーザーIDはnilです。

の場合は、ERBに、私が行います

post.user_id? post.user.email 

記事の繰り返し処理を行う場合、私は

undefined method `email' for nil:NilClass 

を取得します。なぜ私の最初の条件はこれを守っていないのですか?

答えて

3

あなたの構文が意味をなさないと思います。試してみてください:

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をチェックするよりもきれいです。

0

それはより多くの意味になりように、あなたは少しそれを言い換えることができる必要があります:それはあなたが投稿何から条件付き似ていないように私は非常に、あなたのコードを理解していない

<%= post.user.email if post.user %> 

を、しかし、上記のERB声明はそのトリックを行うべきです。

編集:条件文では、Rubyがnilオブジェクトをfalseに評価するため、user.nil?をチェックする必要はありませんが、これは完全に有効ですが、追加する必要があります。これにより、上記のような簡単で簡単な条件文を作成することができます。

関連する問題