Move logic for updating a user into a service class

This commit is contained in:
Scott Albertson
2013-11-01 14:06:20 -07:00
parent 005163b17b
commit 72bfa4471f
4 changed files with 140 additions and 57 deletions
+2 -22
View File
@@ -43,28 +43,8 @@ class UsersController < ApplicationController
user = User.where(username_lower: params[:username].downcase).first
guardian.ensure_can_edit!(user)
json_result(user, serializer: UserSerializer) do |u|
website = params[:website]
if website
website = "http://" + website unless website =~ /^http/
end
u.bio_raw = params[:bio_raw] || u.bio_raw
u.name = params[:name] || u.name
u.website = website || u.website
u.digest_after_days = params[:digest_after_days] || u.digest_after_days
u.auto_track_topics_after_msecs = params[:auto_track_topics_after_msecs].to_i if params[:auto_track_topics_after_msecs]
u.new_topic_duration_minutes = params[:new_topic_duration_minutes].to_i if params[:new_topic_duration_minutes]
u.title = params[:title] || u.title if guardian.can_grant_title?(u)
[:email_digests, :email_always, :email_direct, :email_private_messages,
:external_links_in_new_tab, :enable_quoting, :dynamic_favicon].each do |i|
if params[i].present?
u.send("#{i.to_s}=", params[i] == 'true')
end
end
u.save ? u : nil
updater = UserUpdater.new(user)
updater.update(params)
end
end