Ruby on rails 访问用户';s对象处于不同状态(Ruby on Rails、RESTful身份验证)

Ruby on rails 访问用户';s对象处于不同状态(Ruby on Rails、RESTful身份验证),ruby-on-rails,ruby,variables,scope,restful-authentication,Ruby On Rails,Ruby,Variables,Scope,Restful Authentication,在我的Rails应用程序中,我有一个用户模型(或多或少是通过RESTful身份验证构建的),以及其他几个属于该用户的模型。 比如说: 用户有很多:帖子 帖子属于:用户 在用户资源中的任何地方,我都可以像我所期望的那样访问用户变量。 @user.name、@user.email、@user.login等都返回预期的对象 但是,如果没有返回nil(nil而不是NoMethodError),我似乎无法从任何其他资源(在本例中为posts)访问这些属性 为什么会这样?我甚至觉得奇怪,我可以打电话给当前用

在我的Rails应用程序中,我有一个用户模型(或多或少是通过RESTful身份验证构建的),以及其他几个属于该用户的模型。 比如说:

用户有很多:帖子

帖子属于:用户

在用户资源中的任何地方,我都可以像我所期望的那样访问用户变量。 @user.name、@user.email、@user.login等都返回预期的对象

但是,如果没有返回nil(nil而不是NoMethodError),我似乎无法从任何其他资源(在本例中为posts)访问这些属性


为什么会这样?我甚至觉得奇怪,我可以打电话给
当前用户
很好,就像
当前用户.name
当前用户.email
,但不是针对所讨论的用户。

这里有两个用户可以讨论。
1) 当前登录的用户
2) 帖子所属的用户

当前登录的用户应该能够通过当前用户访问。 需要在Posts控制器中设置post所属的用户:

@user = Users.find(@post.user_id)


谢谢你的回复。假设我试图从Posts/show访问帖子所属的用户名。用户资源中的名称应为@user.name。对于当前Posts控制器中的显示:@post=post.find(params[:id],@user)。如果我试图访问添加帖子的用户的名称,我将(在PostsController中)设置用户:@post=post.find(params[:id]),然后设置用户@user=@post.user。然后在视图中:发布人。HTHIt很奇怪,你说的正是我所期望的,但问题一直存在。我开始想知道引擎盖下发生了什么我没有注意到的事情。您是否在posts表中添加了用户id列?如果是,该列中是否有任何数据?
@user = @post.user