From e86cb487a3eab919edf7ed2b42bc5e796d10678e Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Fri, 21 Jun 2019 10:50:16 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E9=87=8D=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 5097536d5..753999e54 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -87,7 +87,7 @@ class CoursesController < ApplicationController (course_members.role in(1,2,3) and CONCAT(users.lastname, users.firstname) like :keyword) or courses.name like :keyword or schools.name like :keyword } - @courses = @courses.joins(course_members: [user: [user_extension: :school]]).where("#{sql}", keyword: "%#{params[:search]}%") + @courses = @courses.left_joins(course_members: [user: [user_extension: :school]]).where("#{sql}", keyword: "%#{params[:search]}%") end @courses_count = @courses.size From e442c30823aaf821238b642e686c37cdd1c70723 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Fri, 21 Jun 2019 10:52:23 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=9C=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 753999e54..cd1e9a0ea 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -87,7 +87,7 @@ class CoursesController < ApplicationController (course_members.role in(1,2,3) and CONCAT(users.lastname, users.firstname) like :keyword) or courses.name like :keyword or schools.name like :keyword } - @courses = @courses.left_joins(course_members: [user: [user_extension: :school]]).where("#{sql}", keyword: "%#{params[:search]}%") + @courses = @courses.left_outer_joins(course_members: [user: [user_extension: :school]]).where("#{sql}", keyword: "%#{params[:search]}%") end @courses_count = @courses.size From bea98cb44a6b35bc14a6e08fbc74a8deb24ac785 Mon Sep 17 00:00:00 2001 From: p31729568 Date: Fri, 21 Jun 2019 10:58:44 +0800 Subject: [PATCH 3/3] add course board message count rake --- app/models/message.rb | 7 +++---- lib/tasks/course_board_message_count.rake | 24 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 lib/tasks/course_board_message_count.rake diff --git a/app/models/message.rb b/app/models/message.rb index 26946f6d0..d3d507a72 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -56,11 +56,10 @@ class Message < ApplicationRecord from_board = Board.find(messages.first.board_id) root_ids = messages.map(&:id) - children = Message.where(parent_id: root_ids).select(:id).to_a - children_ids = children.map(&:id) - second_children = Message.where(parent_id: children_ids).select(:id).to_a + children_ids = Message.where(parent_id: root_ids).pluck(:id) + second_children_ids = Message.where(parent_id: children_ids).pluck(:id) - ids = root_ids.concat(children_ids).concat(second_children.map(&:id)).uniq + ids = root_ids.concat(children_ids).concat(second_children_ids).uniq ActiveRecord::Base.transaction do Message.where(id: ids, board_id: from_board.id).update_all(board_id: to_board.id) diff --git a/lib/tasks/course_board_message_count.rake b/lib/tasks/course_board_message_count.rake new file mode 100644 index 000000000..d1ac5524d --- /dev/null +++ b/lib/tasks/course_board_message_count.rake @@ -0,0 +1,24 @@ +namespace :course_board do + desc 'transfer children message to root message board' + task children_message_transfer: :environment do + Board.find_each do |board| + logger("Current transfer board id: #{board.id} ~") + + root_subquery = board.messages.where(parent_id: nil).reorder(nil).pluck(:id) + next if root_subquery.blank? + children_subquery = Message.where(parent_id: root_subquery).reorder(nil).pluck(:id) + next if children_subquery.blank? + second_children_subquery = Message.where(parent_id: children_subquery).reorder(nil).pluck(:id) + + ids = children_subquery.concat(second_children_subquery).uniq + Message.where(id: ids).update_all(board_id: board.id) + + Board.reset_counters(board.id, :messages) + logger("transfer success ~") + end + end + + def logger(msg) + puts msg + end +end \ No newline at end of file