私は public_activity gem を使用して Reposts モデルで変更を追跡しています。Repost の create アクションの_create.html.erbパーシャルでは、次のコードをエラーなしで使用できます。
<%= activity.trackable.comment %>
ビューには次のテキストが表示されます。
Comment:0x00000004508ee0>
これは、Reposts と Comments の間に確立した関係を使用して Activerecord を表示していることを証明しています。ただし、コメント テーブルにコンテンツ フィールドを表示するようにコードを拡張しようとすると、エラーが発生します。例えば:
<%= activity.trackable.comment.content %>
次のエラーを返します。
undefined method 'content' for nil:NilClass
activity.trackable.comment は正しい記録を引き出しているようです。確立された関係を介してレコードをプルするだけでなく、そのテーブルから別のフィールドもプルするように、これを拡張するにはどうすればよいですか?
ありがとう!
編集 1: views/public_activity/_create.html.erbのフル ビュー
<% if activity.trackable %>
<%= link_to activity.trackable.comment, activity.trackable.comment %>
<% else %>
which has since been removed
<% end %>
編集 2: レオの支援により、私がしなければならなかったのは、nil をチェックすることだけでした。コードを次のように変更する必要がありました。
<% if activity.trackable && activity.trackable.comment.present? %>
<%= link_to activity.trackable.comment.content, activity.trackable.comment %>
<% else %>
which has since been removed
<% end %>
私のように public_activity Railscast に従っている場合は、追加のコードを追加してnilをチェックすることを強くお勧めします。