目前我有一个教师控制器,让老师看到所有学生的帖子。
def index
if params[:user_id]
@posts = Post.where(user_id: params[:user_id])
else
@posts = Post.all
end
end
您如何让教师只看到学生的帖子,而不是让有不同教师的学生发帖?我正在使用设计。
这就是我对教师控制员所拥有的:
class TeachersController < ApplicationController
before_action :set_post, only: [:show, :edit, :update, :destroy]
def index
if params[:user_id]
@posts = Post.where(user_id: params[:user_id])
else
@posts = Post.all
end
end
end
答案 0 :(得分:1)
如果没有关于您的关联或身份验证的任何信息,我将通过做出以下假设来回答:
将帖子限制为教师的最简单方法是定义其他ActiveRecord关联。在Teacher类中,您可以添加:
has_many :student_posts, through: :students, source: :posts
在您的控制器中,您可以执行以下操作:
class TeacherController
before_action :find_teacher, only: [:index]
def index
@posts = @teacher.student_posts
end
private
def find_teacher
@teacher = current_user
end
end
ActiveRecord只会返回属于给定教师的学生的帖子。请注意,这是一个概念图,并不意味着通过复制和粘贴。