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.
This commit is contained in:
Régis Hanol 2024-04-30 18:08:37 +02:00
parent 0e44072b2b
commit e7d0083dbe
2 changed files with 5 additions and 16 deletions

View File

@ -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

View File

@ -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