如何仅显示用户的帖子。没有其他

时间:2019-09-03 00:20:27

标签: ruby-on-rails associations clearance

此应用程序适用于导师。辅导员完成课程后,他们会填写class_report。然后,索引页面应仅显示其class_reports。 这是我的问题:我已经建立了两个帐户,test1和test2。 test1可以看到test1和test2的class_reports,但是test2不能看到任何帖子,甚至看不到它们的帖子。甚至说test1在创建test2时创建了一个帖子。

我很确定索引部分有问题或创建了class_reports_controller的一部分,但是我不确定tbh。我认为也可以在模型中。

class_reports_controller.rb

class ClassReportsController < ApplicationController
  before_action :require_login
  before_action :set_class_report, only: [:show, :edit, :update, :destroy]

  # GET /class_reports
  # GET /class_reports.json
  def index
    @class_report = current_user.class_reports
  end

def create
    @class_report = ClassReport.new(class_report_params)
    @class_report.user = User.first

    respond_to do |format|
      if @class_report.save
        format.html { redirect_to @class_report, notice: 'Class report was successfully created.' }
        format.json { render :show, status: :created, location: @class_report }
      else
        format.html { render :new }
        format.json { render json: @class_report.errors, status: :unprocessable_entity }
      end
    end
  end

型号:

class_report.rb

class ClassReport < ApplicationRecord
  belongs_to :user
end

user.rb

class User < ApplicationRecord
  include Clearance::User
  has_many :class_reports
  before_save { self.email = email.downcase }
end

1 个答案:

答案 0 :(得分:1)

您的create操作在此行上有毛病:

@class_report.user = User.first

并将其更改为:

@class_report.user = current_user

所以第一行的问题是所有报告都已创建并链接到(始终)第一用户,这就是为什么其他用户没有报告的原因。通过更改为第二行,我们创建一个报告并链接到已登录用户(current_user),因此将创建该报告并将其分配给任何登录并创建报告的人。

希望有帮助。