diff --git a/app/controllers/api/v1/users/feedbacks_controller.rb b/app/controllers/api/v1/users/feedbacks_controller.rb new file mode 100644 index 000000000..4e79de7bd --- /dev/null +++ b/app/controllers/api/v1/users/feedbacks_controller.rb @@ -0,0 +1,16 @@ +class Api::V1::Users::FeedbacksController < Api::V1::BaseController + + before_action :load_observe_user + before_action :check_auth_for_observe_user + + def create + @result = Api::V1::Users::Feedbacks::CreateService.call(@observe_user, feedback_params) + return render_error("反馈意见创建失败.") if @result.nil? + return render_ok + end + + private + def feedback_params + params.permit(:content) + end +end \ No newline at end of file diff --git a/app/models/feedback.rb b/app/models/feedback.rb new file mode 100644 index 000000000..3cb7e5ea3 --- /dev/null +++ b/app/models/feedback.rb @@ -0,0 +1,20 @@ +# == Schema Information +# +# Table name: feedbacks +# +# id :integer not null, primary key +# user_id :integer +# content :text(65535) +# created_at :datetime not null +# updated_at :datetime not null +# +# Indexes +# +# index_feedbacks_on_user_id (user_id) +# + +class Feedback < ApplicationRecord + + belongs_to :user + +end diff --git a/app/services/api/v1/users/feedbacks/create_service.rb b/app/services/api/v1/users/feedbacks/create_service.rb new file mode 100644 index 000000000..2db4baac2 --- /dev/null +++ b/app/services/api/v1/users/feedbacks/create_service.rb @@ -0,0 +1,26 @@ +class Api::V1::Users::Feedbacks::CreateService < ApplicationService + include ActiveModel::Model + + attr_reader :user, :content + attr_accessor :feedback + + validates :content, presence: true + + def initialize(user, params) + @user = user + @content = params[:content] + end + + def call + raise Error, errors.full_messages.join(",") unless valid? + + begin + @feedback = Feedback.new(user: user, content: content) + @feedback.save! + + return @feedback.valid? ? @feedback : nil + rescue + raise Error, "服务器错误,请联系系统管理员!" + end + end +end \ No newline at end of file diff --git a/app/views/admins/projects/shared/_list.html.erb b/app/views/admins/projects/shared/_list.html.erb index 720b08dac..eb0e61255 100644 --- a/app/views/admins/projects/shared/_list.html.erb +++ b/app/views/admins/projects/shared/_list.html.erb @@ -5,7 +5,6 @@