dev_jupyter
daiao 5 years ago
parent deb1fc90e4
commit c4447c4807

@ -43,14 +43,21 @@ class HacksController < ApplicationController
def create def create
begin begin
logger.info("##########{hack_params}") logger.info("##########{hack_params}")
tip_exception("一次只能增加50个测试集") if hack_sets_params.size > 50
tip_exception("一次只能增加50个知识点") if params[:tags].size > 50
hack = Hack.new(hack_params) hack = Hack.new(hack_params)
hack.user_id = current_user.id hack.user_id = current_user.id
hack.identifier = generate_identifier Hack, 8 hack.identifier = generate_identifier Hack, 8
tag_params =
params[:tags].each do |tag|
{tag_discipline_id: tag}
end
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
hack.save! hack.save!
# 创建测试集与代码 # 创建测试集与代码
hack.hack_sets.create!(hack_sets_params) hack.hack_sets.create!(hack_sets_params)
# 新建知识点 # 新建知识点
hack.tag_discipline_containers.create!(tag_params) if tag_params
hack_codes = hack.hack_codes.new(hack_code_params) hack_codes = hack.hack_codes.new(hack_code_params)
hack_codes.modify_time = Time.now hack_codes.modify_time = Time.now
hack_codes.save! hack_codes.save!
@ -64,6 +71,13 @@ class HacksController < ApplicationController
def update def update
begin begin
# 知识点
tag_discipline_ids = @hack.tag_discipline_containers.pluck(:tag_discipline_id)
new_tag_ids = params[:tags].to_a - tag_discipline_ids
tag_params =
new_tag_ids.each do |tag|
{tag_discipline_id: tag}
end
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
@hack.update_attributes!(hack_params) @hack.update_attributes!(hack_params)
set_ids = @hack.hack_sets.pluck(:id) set_ids = @hack.hack_sets.pluck(:id)
@ -74,6 +88,8 @@ class HacksController < ApplicationController
# 更新代码 # 更新代码
code_params = params[:hack_codes][:code] != @hack.code ? hack_code_params.merge(modify_time: Time.now) : hack_code_params code_params = params[:hack_codes][:code] != @hack.code ? hack_code_params.merge(modify_time: Time.now) : hack_code_params
@hack.hack_codes.first.update_attributes!(code_params) @hack.hack_codes.first.update_attributes!(code_params)
@hack.tag_discipline_containers.create!(tag_params) if tag_params
@hack.tag_discipline_containers.where.not(tag_discipline_id: params[:tags]).destroy_all
end end
render_ok render_ok
rescue Exception => e rescue Exception => e
@ -127,9 +143,11 @@ class HacksController < ApplicationController
@hacks = hacks.includes(:hack_sets).page(page).per(limit) @hacks = hacks.includes(:hack_sets).page(page).per(limit)
end end
def edit;end def edit;
end
def new;end def new;
end
def destroy def destroy
begin begin
@ -148,6 +166,7 @@ class HacksController < ApplicationController
end end
private private
# 实名认证老师,管理员与运营人员权限 # 实名认证老师,管理员与运营人员权限
def require_teacher_identity def require_teacher_identity
unless current_user.certification_teacher? || admin_or_business? unless current_user.certification_teacher? || admin_or_business?
@ -167,7 +186,7 @@ class HacksController < ApplicationController
end end
def hack_params def hack_params
params.require(:hack).permit(:name, :description, :difficult, :category, :open_or_not, :time_limit, :score) params.require(:hack).permit(:name, :description, :difficult, :category, :open_or_not, :time_limit, :score, :sub_discipline_id)
end end
def hack_sets_params def hack_sets_params

@ -15,8 +15,11 @@ class Hack < ApplicationRecord
has_many :praise_treads, as: :praise_tread_object, dependent: :destroy has_many :praise_treads, as: :praise_tread_object, dependent: :destroy
# 消息 # 消息
has_many :tidings, as: :container has_many :tidings, as: :container
# 知识点
has_many :tag_discipline_containers, dependent: :destroy
belongs_to :user belongs_to :user
belongs_to :sub_discipline
scope :published, -> { where(status: 1) } scope :published, -> { where(status: 1) }
scope :unpublish, -> { where(status: 0) } scope :unpublish, -> { where(status: 0) }

@ -1,6 +1,7 @@
class SubDiscipline < ApplicationRecord class SubDiscipline < ApplicationRecord
belongs_to :discipline belongs_to :discipline
has_many :tag_disciplines, dependent: :destroy has_many :tag_disciplines, dependent: :destroy
has_one :hack
has_many :shixun_tag_disciplines, -> { where("shixun = 1") }, class_name: "TagDiscipline" has_many :shixun_tag_disciplines, -> { where("shixun = 1") }, class_name: "TagDiscipline"
has_many :subject_tag_disciplines, -> { where("subject = 1") }, class_name: "TagDiscipline" has_many :subject_tag_disciplines, -> { where("subject = 1") }, class_name: "TagDiscipline"

@ -1,5 +1,6 @@
class TagDiscipline < ApplicationRecord class TagDiscipline < ApplicationRecord
belongs_to :sub_discipline belongs_to :sub_discipline
has_many :tag_discipline_containers, dependent: :destroy
def discipline def discipline
sub_discipline&.discipline sub_discipline&.discipline

@ -0,0 +1,5 @@
class AddSubDisciplineIdForHacks < ActiveRecord::Migration[5.2]
def change
add_column :hacks, :sub_discipline_id, :integer
end
end
Loading…
Cancel
Save