From e7d0083dbe4ffe84a8d6645cde248d6a2beac155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Tue, 30 Apr 2024 18:08:37 +0200 Subject: [PATCH] FIX: creating watched words... ... wasn't working because it wasn't storing the proper "action" value. Issue was that we were using the "action" parameter which is being used by Rails to determine which controller action to call. We need to use the "action_key" parameter instead. --- .../admin/watched_words_controller.rb | 4 ++-- app/models/watched_word_group.rb | 17 +++-------------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/app/controllers/admin/watched_words_controller.rb b/app/controllers/admin/watched_words_controller.rb index 8800f150fc7..3efe97c0195 100644 --- a/app/controllers/admin/watched_words_controller.rb +++ b/app/controllers/admin/watched_words_controller.rb @@ -14,7 +14,7 @@ class Admin::WatchedWordsController < Admin::StaffController def create opts = watched_words_params - action = opts[:action] || self.class.actions[opts[:action_key].to_sym] + action = WatchedWord.actions[opts[:action_key].to_sym] words = opts.delete(:words) watched_word_group = WatchedWordGroup.new(action: action) @@ -118,6 +118,6 @@ class Admin::WatchedWordsController < Admin::StaffController def watched_words_params @watched_words_params ||= - params.permit(:id, :replacement, :action, :action_key, :case_sensitive, words: []) + params.permit(:id, :replacement, :action_key, :case_sensitive, words: []) end end diff --git a/app/models/watched_word_group.rb b/app/models/watched_word_group.rb index 6bee2d22b1d..b63197ac5b4 100644 --- a/app/models/watched_word_group.rb +++ b/app/models/watched_word_group.rb @@ -5,14 +5,9 @@ class WatchedWordGroup < ActiveRecord::Base has_many :watched_words, dependent: :destroy - def self.actions - WatchedWord.actions - end - def create_or_update_members(words, params) WatchedWordGroup.transaction do - self.action_key = params[:action_key] if params[:action_key] - self.action = params[:action] if params[:action] + self.action = WatchedWord.actions[params[:action_key].to_sym] self.save! if self.changed? words.each do |word| @@ -21,22 +16,16 @@ class WatchedWordGroup < ActiveRecord::Base params.merge(word: word, watched_word_group_id: self.id), ) - unless watched_word.valid? + if !watched_word.valid? self.errors.merge!(watched_word.errors) - raise ActiveRecord::Rollback end end end end - def action_key=(arg) - self.action = WatchedWordGroup.actions[arg.to_sym] - end - def action_log_details - action_key = WatchedWord.actions.key(self.action) - "#{action_key} → #{watched_words.pluck(:word).join(", ")}" + "#{WatchedWord.actions.key(self.action)} → #{watched_words.pluck(:word).join(", ")}" end end