【问题标题】:Accessing User's Objects in Different States (Ruby on Rails, RESTful Authentication)访问不同状态的用户对象(Ruby on Rails、RESTful 身份验证)
【发布时间】:2010-10-19 18:04:56
【问题描述】:

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

用户 has_many :posts

post belongs_to :user

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

但是,如果不返回 nil(nil 而不是 NoMethodError),我似乎无法从任何其他资源(在此示例中为帖子)访问这些属性中的任何一个。

这是为什么?对我来说似乎更奇怪的是,我可以调用 current_user 就好了,就像在 current_user.namecurrent_user.email 中一样,但对于相关用户来说却不行。

【问题讨论】:

    标签: ruby-on-rails ruby variables scope restful-authentication


    【解决方案1】:

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

    当前登录的用户应该可以通过 current_user 访问。 帖子所属的用户需要在 Posts 控制器中设置:

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

    @user = @post.user
    

    【讨论】:

    • 感谢您的回复。假设我正在尝试从 Posts/show 访问帖子所属的用户名。名称将是用户资源中的@user.name。目前在 Posts 控制器中显示:@post = Post.find(params[:id], @user).
    • 如果我试图访问添加帖子的用户的名称,我会(在 PostsController 中)设置用户:@post = Post.find(params[:id]),然后设置用户@user = @post.user。然后在视图中:由 发布。 HTH
    • 很奇怪,你说的正是我所期望的,但问题仍然存在。我开始怀疑我没有注意到的幕后情况。
    • 您是否在您的帖子表中添加了 user_id 列?如果有,该列中是否有任何数据?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2011-07-06
    • 2018-04-27
    • 1970-01-01
    相关资源
    最近更新 更多