Make subscriptions insert-only

This commit is contained in:
Maximilian Grundke
2017-09-20 17:14:55 +02:00
parent 28741854a6
commit be5b1df76a
5 changed files with 13 additions and 5 deletions

View File

@ -123,7 +123,8 @@ class CommentsController < ApplicationController
request_for_comment.commenters.each do |commenter| request_for_comment.commenters.each do |commenter|
subscriptions = Subscription.where( subscriptions = Subscription.where(
:request_for_comment_id => request_for_comment.id, :request_for_comment_id => request_for_comment.id,
:user_id => commenter.id, :user_type => commenter.class.name) :user_id => commenter.id, :user_type => commenter.class.name,
:deleted => false)
subscriptions.each do |subscription| subscriptions.each do |subscription|
if (subscription.subscription_type == 'author' and current_user == request_for_comment.user) or subscription.subscription_type == 'all' if (subscription.subscription_type == 'author' and current_user == request_for_comment.user) or subscription.subscription_type == 'all'
if subscription.user != current_user if subscription.user != current_user

View File

@ -32,7 +32,8 @@ class SubscriptionsController < ApplicationController
else else
authorize! authorize!
rfc = @subscription.try(:request_for_comment) rfc = @subscription.try(:request_for_comment)
if @subscription.destroy @subscription.deleted = true
if @subscription.save
respond_to do |format| respond_to do |format|
format.html { redirect_to request_for_comment_url(rfc), notice: t('subscriptions.successfully_unsubscribed') } format.html { redirect_to request_for_comment_url(rfc), notice: t('subscriptions.successfully_unsubscribed') }
format.json { render json: {message: t('subscriptions.successfully_unsubscribed')}, status: :ok} format.json { render json: {message: t('subscriptions.successfully_unsubscribed')}, status: :ok}
@ -55,7 +56,7 @@ class SubscriptionsController < ApplicationController
def subscription_params def subscription_params
current_user_id = current_user.try(:id) current_user_id = current_user.try(:id)
current_user_class_name = current_user.try(:class).try(:name) current_user_class_name = current_user.try(:class).try(:name)
params[:subscription].permit(:request_for_comment_id, :subscription_type).merge(user_id: current_user_id, user_type: current_user_class_name) params[:subscription].permit(:request_for_comment_id, :subscription_type).merge(user_id: current_user_id, user_type: current_user_class_name, deleted: false)
end end
private :subscription_params private :subscription_params
end end

View File

@ -2,7 +2,7 @@
h5 =t('exercises.implement.comment.others') h5 =t('exercises.implement.comment.others')
.container .container
label label
input#subscribe type='checkbox' title=t('request_for_comments.subscribe_to_author') data-subscription=Subscription.where(user: current_user, request_for_comment_id: @request_for_comment.id).try(:first).try(:id) input#subscribe type='checkbox' title=t('request_for_comments.subscribe_to_author') data-subscription=Subscription.where(user: current_user, request_for_comment_id: @request_for_comment.id, subscription_type: 'author', deleted: false).try(:first).try(:id)
= t('request_for_comments.subscribe_to_author') = t('request_for_comments.subscribe_to_author')
#myComment #myComment

View File

@ -0,0 +1,5 @@
class AddDeletedToSubscription < ActiveRecord::Migration
def change
add_column :subscriptions, :deleted, :boolean
end
end

View File

@ -11,7 +11,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20170913054203) do ActiveRecord::Schema.define(version: 20170920145852) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -288,6 +288,7 @@ ActiveRecord::Schema.define(version: 20170913054203) do
t.string "subscription_type" t.string "subscription_type"
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.boolean "deleted"
end end
create_table "tags", force: :cascade do |t| create_table "tags", force: :cascade do |t|