0

我正在用 Ruby on rails 构建一个社交网络。我正在尝试将 user_id 添加到用户状态,但它会产生错误。代码可以在我的 github 上找到:https ://github.com/lewisfrost/treebook.git

你能帮忙吗?我整天都被困在这上面!!

谢谢

4

2 回答 2

1

至少有一个status对象没有关联的user. 这反过来意味着您无法显示该first_name属性。您可以通过在控制台中运行它来查找哪些状态 ID 存在此问题:

puts Status.where(user_id: nil).map(&:id).inspect

如果你想确保一个状态确实一个用户,你应该:

  • 使用以下方法验证用户是否关联:validates :user_id, :presence => true
  • 在数据库中将您的:user_id列设置为 NOT NULL:

    change_table(:status){|t| t.references :user, :null => false }

如果您不关心是否分配了用户,请修改您的视图以仅在存在 :user_id 时运行该 erb 片段。

于 2012-11-20T19:54:03.437 回答
0

为了尝试获取与您的状态相关联的用户的名字和姓氏,您可以使用非常方便的 & 含义方法 try

你可以在你的视图中做这样的事情:

<strong><%= status.user.try(:first_name) %> <%= status.user.try(:last_name) %></strong>

如果用户存在,它将尝试获取用户的名字,如果用户不存在,则不会引发错误!

于 2012-11-20T19:59:57.043 回答