yslnewtiku
cxt 5 years ago
parent 6753f5fee4
commit fc441cde2f

@ -0,0 +1,6 @@
class Admins::DisciplinesController < Admins::BaseController
def index
end
end

@ -51,7 +51,7 @@ class ItemBanksController < ApplicationController
end
def form_params
params.permit(:repertoire_id, :sub_repertoire_id, :item_type, :difficulty, :name, :analysis, tag_repertoire_id: [], choices: %i[choice_text is_answer])
params.permit(:discipline_id, :sub_discipline_id, :item_type, :difficulty, :name, :analysis, tag_discipline_id: [], choices: %i[choice_text is_answer])
end
end

@ -1,10 +1,10 @@
class ItemBanks::SaveItemForm
include ActiveModel::Model
attr_accessor :repertoire_id, :sub_repertoire_id, :item_type, :difficulty, :name, :analysis, :tag_repertoire_id, :choices
attr_accessor :discipline_id, :sub_discipline_id, :item_type, :difficulty, :name, :analysis, :tag_discipline_id, :choices
validates :repertoire_id, presence: true
validates :sub_repertoire_id, presence: true
validates :discipline_id, presence: true
validates :sub_discipline_id, presence: true
validates :item_type, presence: true, inclusion: {in: %W(SINGLE MULTIPLE JUDGMENT COMPLETION SUBJECTIVE PRACTICAL PROGRAM)}
validates :difficulty, presence: true, inclusion: {in: 1..3}, numericality: { only_integer: true }
validates :name, presence: true, length: { maximum: 1000 }

@ -0,0 +1,3 @@
class Discipline < ApplicationRecord
has_many :sub_disciplines, dependent: :destroy
end

@ -4,13 +4,13 @@ class ItemBank < ApplicationRecord
# item_type: 0 单选 1 多选 2 判断 3 填空 4 简答 5 实训 6 编程
belongs_to :user
belongs_to :sub_repertoire
belongs_to :sub_discipline
has_one :item_analysis, dependent: :destroy
has_many :item_choices, dependent: :destroy
has_many :item_baskets, dependent: :destroy
has_many :item_bank_tag_repertoires, dependent: :destroy
has_many :tag_repertoires, through: :item_bank_tag_repertoires
has_many :tag_discipline_containers, as: :container, dependent: :destroy
has_many :tag_disciplines, through: :tag_discipline_containers
def analysis
item_analysis&.analysis

@ -1,4 +0,0 @@
class ItemBankTagRepertoire < ApplicationRecord
belongs_to :item_bank
belongs_to :tag_repertoire
end

@ -0,0 +1,4 @@
class SubDiscipline < ApplicationRecord
belongs_to :discipline
has_many :tag_disciplines, dependent: :destroy
end

@ -0,0 +1,3 @@
class TagDiscipline < ApplicationRecord
belongs_to :sub_discipline
end

@ -0,0 +1,5 @@
class TagDisciplineContainer < ApplicationRecord
belongs_to :tag_discipline
belongs_to :container, polymorphic: true, optional: true
end

@ -15,12 +15,12 @@ class ItemBankQuery < ApplicationQuery
items = ItemBank.where(user_id: User.current.id)
end
if params[:tag_repertoire_id].present?
items = items.joins(:item_bank_tag_repertoires).where(item_bank_tag_repertoires: {tag_repertoire_id: params[:tag_repertoire_id]})
elsif params[:sub_repertoire_id].present?
items = items.where(sub_repertoire_id: params[:sub_repertoire_id])
elsif params[:repertoire_id].present?
items = items.joins(:sub_repertoire).where(sub_repertoires: {repertoire_id: params[:repertoire_id]})
if params[:tag_discipline_id].present?
items = items.joins(:tag_discipline_containers).where(tag_discipline_containers: {tag_discipline_id: params[:tag_discipline_id]})
elsif params[:sub_discipline_id].present?
items = items.where(sub_discipline_id: params[:sub_discipline_id])
elsif params[:discipline_id].present?
items = items.joins(:sub_discipline).where(sub_disciplines: {discipline_id: params[:discipline_id]})
end
items = items.where(item_type: params[:item_type].to_i) if params[:item_type].present?

@ -14,7 +14,7 @@ class ItemBanks::SaveItemService < ApplicationService
ActiveRecord::Base.transaction do
item.item_type = params[:item_type] if new_record
item.difficulty = params[:difficulty]
item.sub_repertoire_id = params[:sub_repertoire_id]
item.sub_discipline_id = params[:sub_discipline_id]
item.name = params[:name].strip
item.save!
@ -23,13 +23,13 @@ class ItemBanks::SaveItemService < ApplicationService
analysis.save
# 知识点的创建
new_tag_repertoire_ids = params[:tag_repertoire_id]
old_tag_repertoire_ids = item.item_bank_tag_repertoires.pluck(:tag_repertoire_id)
delete_tag_repertoire_ids = old_tag_repertoire_ids - new_tag_repertoire_ids
create_tag_repertoire_ids = new_tag_repertoire_ids - old_tag_repertoire_ids
item.item_bank_tag_repertoires.where(tag_repertoire_id: delete_tag_repertoire_ids).destroy_all
create_tag_repertoire_ids.each do |tag_id|
item.item_bank_tag_repertoires << ItemBankTagRepertoire.new(tag_repertoire_id: tag_id)
new_tag_discipline_ids = params[:tag_discipline_id]
old_tag_discipline_ids = item.tag_discipline_containers.pluck(:tag_discipline_id)
delete_tag_discipline_ids = old_tag_discipline_ids - new_tag_discipline_ids
create_tag_discipline_ids = new_tag_discipline_ids - old_tag_discipline_ids
item.tag_discipline_containers.where(tag_discipline_id: delete_tag_discipline_ids).destroy_all
create_tag_discipline_ids.each do |tag_id|
item.tag_discipline_containers << TagDisciplineContainer.new(tag_discipline_id: tag_id)
end
# 选项的创建

@ -38,6 +38,8 @@
<% end %>
</li>
<li><%= sidebar_item(admins_disciplines_path, '课程体系', icon: 'sitemap', controller: 'admins-disciplines') %></li>
<li>
<%= sidebar_item_group('#course-submenu', '课堂管理', icon: 'book') do %>
<li><%= sidebar_item(admins_course_lists_path, '课程列表', icon: 'list', controller: 'admins-course_lists') %></li>

@ -1257,6 +1257,10 @@ Rails.application.routes.draw do
resources :courses, only: [:index, :destroy, :update]
resources :projects, only: [:index, :destroy]
resources :disciplines, only: [:index, :create, :update, :destroy] do
end
end
namespace :cooperative do

@ -1,10 +0,0 @@
class CreateItemBankTagRepertoires < ActiveRecord::Migration[5.2]
def change
create_table :item_bank_tag_repertoires do |t|
t.references :item_bank, index: true
t.references :tag_repertoire, index: true
t.timestamps
end
end
end

@ -0,0 +1,12 @@
class CreateDisciplines < ActiveRecord::Migration[5.2]
def change
create_table :disciplines do |t|
t.string :name
t.boolean :subject
t.boolean :shixun
t.boolean :question
t.timestamps
end
end
end

@ -0,0 +1,13 @@
class CreateSubDisciplines < ActiveRecord::Migration[5.2]
def change
create_table :sub_disciplines do |t|
t.references :discipline, index: true
t.string :name
t.boolean :subject
t.boolean :shixun
t.boolean :question
t.timestamps
end
end
end

@ -0,0 +1,13 @@
class CreateTagDisciplines < ActiveRecord::Migration[5.2]
def change
create_table :tag_disciplines do |t|
t.references :sub_discipline, index: true
t.string :name
t.boolean :subject
t.boolean :shixun
t.boolean :question
t.timestamps
end
end
end

@ -0,0 +1,6 @@
class MigrateItemBankTagColumn < ActiveRecord::Migration[5.2]
def change
remove_column :item_banks, :sub_repertoire_id
add_column :item_banks, :sub_discipline_id, :integer, index: true
end
end

@ -0,0 +1,13 @@
class CreateTagDisciplineContainers < ActiveRecord::Migration[5.2]
def change
create_table :tag_discipline_containers do |t|
t.references :tag_discipline, index: true
t.integer :container_id
t.string :container_type
t.timestamps
end
add_index :tag_discipline_containers, [:container_type, :container_id], name: "index_on_container"
end
end

@ -1,5 +1,5 @@
require 'rails_helper'
RSpec.describe ItemBankTagRepertoire, type: :model do
RSpec.describe Discipline, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end

@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe SubDiscipline, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end

@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe TagDisciplineContainer, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end

@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe TagDiscipline, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end
Loading…
Cancel
Save