-4

我只想显示当前登录用户的详细信息。我已经使用设计创建了身份验证,并且在用户登录后。我创建了一个学生脚手架,用户可以在其中创建一个学生,但我不希望学生由第一个用户创建,显示给登录的第二个用户,第三个用户也是如此。每个用户的详细信息应该单独显示。。有人可以指导我吗?提前致谢。

4

4 回答 4

1

您需要设置模型之间的关联

之后,它可能如下所示:

  @students = @user.students.all

在哪里@user = current_user

我猜。

编辑:

为了使其故障安全:

@students = @user.students.all if @user

为避免以后出现问题,仅在控制器未设置用户时设置用户,例如在用户视图中:

@user ||= current_user

这仅在尚未设置时将 @user 设置为 current_user。

于 2013-06-03T06:56:19.263 回答
0

设计带有自己的一组帮助程序,其中一个是 current_user,所以如果我想显示当前用户名,我会这样做

<%= current_user.name %>

这假设名称属性在用户模型中

查看设计wiki 了解更多信息

于 2013-06-03T08:16:38.967 回答
0

看看CanCan

CanCan 是 Ruby on Rails 的授权库,它限制给定用户可以访问的资源。

定义能力很简单:

can :read, Student, :user_id => user.id

以上将授予用户仅读取他拥有的学生记录的权限。但是您必须首先进行一些设置工作,例如user_id在学生表中添加一列,并在用户创建学生时相应地设置此列。

CanCan wiki是一个很好的起点,RailsCasts 涵盖了 CanCan

于 2013-06-03T09:21:49.183 回答
0

为了做你想做的事,你需要在表格中添加一个user_id字段。然后在模型上students创建关系并在“用户”模型上创建关系。belongs_to :userStudenthas_many :students

当用户创建学生时,您应该做current_user.students.create(params[:student]或多部分:

student = current_user.students.build(params[:student]
if student.save
  ...do some stuff
end

有了这个,你可以使用你的current_user来只拉他们创建的学生current_user.students

于 2013-06-03T07:18:07.050 回答