Ruby on rails RoR:为每个循环筛选用户选项
我正在尝试筛选视图中按学校用户id完成的选项。这项质询的内容如下: 因此,学生能够标记一项作业是否完成。但在视图中,它呈现了4个完整选项,因为4个school_用户与该作业相关。我正在尝试筛选,以便只有当前school_用户的完整选项可用 用户和学校用户有一对一的关系 在我看来(如果where语句删除后呈现4个完整选项,则此操作无效且不呈现任何内容) homeworks/show.html.erbRuby on rails RoR:为每个循环筛选用户选项,ruby-on-rails,ruby,foreach,filter,Ruby On Rails,Ruby,Foreach,Filter,我正在尝试筛选视图中按学校用户id完成的选项。这项质询的内容如下: 因此,学生能够标记一项作业是否完成。但在视图中,它呈现了4个完整选项,因为4个school_用户与该作业相关。我正在尝试筛选,以便只有当前school_用户的完整选项可用 用户和学校用户有一对一的关系 在我看来(如果where语句删除后呈现4个完整选项,则此操作无效且不呈现任何内容) homeworks/show.html.erb <% @homework.homework_students.where(school_us
<% @homework.homework_students.where(school_user_id: current_user.id).each do |homework_student| %>
<%= link_to "complete", complete_homework_path(:homework_id => @homework, :home_work_students_id => homework_student), method: :patch %>
<% end %>
家庭作业_student.rb
has_many :homework_ratings, :class_name => 'HomeworkRating'
belongs_to :homework, :class_name => 'Homework', :foreign_key => :homework_id, dependent: :destroy
belongs_to :school_user, :class_name => 'SchoolUser', :foreign_key => :school_user_id
作业.rb
has_many :homework_students, :class_name => 'HomeworkStudent', dependent: :destroy
belongs_to :school_user, :class_name => 'SchoolUser', :foreign_key => :school_user_id
如果我在其他地方过滤,我会这样做:
<% if homework.school_user.user_id == current_user.id %>
应该是
@homework.homework_students.joins(:school_user).where(school_users: { user_id: current_user.id }).each
这个
,:class\u name=>'SchoolUser',:foreign\u key=>:school\u user\u id
是多余的,Rails可以为您解决这个问题。这同样适用于:部分外键中的家庭作业映射,以及其余映射中的类名。。where(school\u user id:current\u user.id)
应该是。where(school\u user:current\u user)
是当前用户的一个实例吗,我认为这是一个用户的例子。用户id也在学校用户模型中。我在上面试过了。同样的结果,不呈现任何内容。所有内容都经过school user,因此在该示例中有效。调试时,用调试输出替换链接到,例如,
,然后发布您的输出。
irb(main):002:0> search = HomeworkStudent.find(142)
HomeworkStudent Load (0.5ms) SELECT `homework_students`.* FROM `homework_students` WHERE `homework_students`.`id` = 142 LIMIT 1
=> #<HomeworkStudent id: 142, school_user_id: 10001, homework_id: 78, completed_on: "2016-11-23 18:05:34", created_at: "2016-11-22 00:27:24", updated_at: "2016-11-23 18:05:34", completed: nil>
<% @homework.homework_students.joins(:school_user).where(school_user: { user_id: current_user.id }).each do |homework_student| %>
Mysql2::Error: Unknown column 'school_user.user_id' in 'where clause': SELECT `homework_students`.* FROM `homework_students` INNER JOIN `school_users` ON `school_users`.`id` = `homework_students`.`school_user_id` WHERE `homework_students`.`homework_id` = 78 AND `school_user`.`user_id` = 1
@homework.homework_students.joins(:school_user).where(school_users: { user_id: current_user.id }).each