1

为什么这段代码会返回错误?
是因为我的关联来自Community还是CommunityTopics没有正确设置?

nil:NilClass 的未定义方法“user_profile”

  <% @community.community_topics.each do |topic| %>
    <li>
    <%= link_to topic.user.user_profile.nickname, community_topic_path(@community, topic) %>
    </li>
  <% end %>

我有4个模型,例如

  1. 用户
  2. UserProfile(始终与用户一对一设置)
  3. 社区
  4. 社区话题

    • 用户可以根据需要创建社区。
    • 用户可以根据需要将主题发布到任何社区。

这种情况下的关联应该是怎样的?
我的说法好吗??

用户

has_one :user_profile
has_many :communities
has_many :community_topics

用户资料

belongs_to :user

社区

belongs_to :user
has_many :community_topics

社区话题

belongs_to :user
belongs_to :community
4

1 回答 1

2

您的联想似乎没有问题,topic.user至少其中一个主题为零。如果CommunityTopic应该总是有一个user,您将需要实现一个验证(和 NOT NULL 数据库约束)以确保该类上存在用户关联并清理任何现有数据。否则,您将需要进行防御性编码,例如:

<%= link_to topic.user.user_profile.nickname, community_topic_path(@community, topic) if topic.user %>
于 2012-12-24T17:17:15.967 回答