class Api::V1::Projects::DatasetsController < Api::V1::BaseController before_action :require_public_and_member_above, only: [:show] before_action :require_member_above, only: [:create, :update] before_action :find_dataset, only: [:update, :show] before_action :check_menu_authorize def create ::Projects::Datasets::CreateForm.new(dataset_params).validate! return render_error('该项目下已存在数据集!') if @project.project_dataset.present? @project_dataset = ProjectDataset.new(dataset_params.merge!(project_id: @project.id)) if @project_dataset.save! render_ok else render_error('创建数据集失败!') end rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) end def update ::Projects::Datasets::CreateForm.new(dataset_params).validate! @project_dataset.attributes = dataset_params if @project_dataset.save! render_ok else render_error("更新数据集失败!") end rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) end def show @attachments = kaminari_paginate(@project_dataset.attachments.includes(:author)) end private def dataset_params params.permit(:title, :description, :license_id, :paper_content) end def find_dataset @project_dataset = @project.project_dataset return render_not_found unless @project_dataset.present? end def check_menu_authorize return render_not_found unless @project.has_menu_permission("dataset") end end