Prefer find_by() instead of where().first

These are very similar, differing only if we would expect multiple
results and the sorting is important. However, in all our cases
we're only expecting one result to be returned, and so find_by is
easier to read.
This commit is contained in:
Andy Allan 2023-10-04 17:53:58 +01:00
parent c8fc2218e5
commit 1700c23dd1
11 changed files with 44 additions and 41 deletions

View file

@ -115,7 +115,7 @@ module Api
trace.save!
# Finally save the user's preferred privacy level
if pref = current_user.preferences.where(:k => "gps.trace.visibility").first
if pref = current_user.preferences.find_by(:k => "gps.trace.visibility")
pref.v = visibility
pref.save
else

View file

@ -22,7 +22,7 @@ class ApplicationController < ActionController::Base
def authorize_web
if session[:user]
self.current_user = User.where(:id => session[:user], :status => %w[active confirmed suspended]).first
self.current_user = User.find_by(:id => session[:user], :status => %w[active confirmed suspended])
if session[:fingerprint] &&
session[:fingerprint] != current_user.fingerprint

View file

@ -61,7 +61,7 @@ class DiaryEntriesController < ApplicationController
def show
entries = @user.diary_entries
entries = entries.visible unless can? :unhide, DiaryEntry
@entry = entries.where(:id => params[:id]).first
@entry = entries.find_by(:id => params[:id])
if @entry
@title = t ".title", :user => params[:display_name], :title => @entry.title
@comments = can?(:unhidecomment, DiaryEntry) ? @entry.comments : @entry.visible_comments
@ -74,7 +74,7 @@ class DiaryEntriesController < ApplicationController
def new
@title = t ".title"
default_lang = current_user.preferences.where(:k => "diary.default_language").first
default_lang = current_user.preferences.find_by(:k => "diary.default_language")
lang_code = default_lang ? default_lang.v : current_user.preferred_language
@diary_entry = DiaryEntry.new(entry_params.merge(:language_code => lang_code))
set_map_location
@ -99,7 +99,7 @@ class DiaryEntriesController < ApplicationController
@diary_entry.user = current_user
if @diary_entry.save
default_lang = current_user.preferences.where(:k => "diary.default_language").first
default_lang = current_user.preferences.find_by(:k => "diary.default_language")
if default_lang
default_lang.v = @diary_entry.language_code
default_lang.save!

View file

@ -19,7 +19,7 @@ class TracesController < ApplicationController
# from display name, pick up user id if one user's traces only
display_name = params[:display_name]
if display_name.present?
target_user = User.active.where(:display_name => display_name).first
target_user = User.active.find_by(:display_name => display_name)
if target_user.nil?
render_unknown_user display_name
return
@ -283,7 +283,7 @@ class TracesController < ApplicationController
# Save the trace object
if trace.save
# Finally save the user's preferred privacy level
if pref = current_user.preferences.where(:k => "gps.trace.visibility").first
if pref = current_user.preferences.find_by(:k => "gps.trace.visibility")
pref.v = visibility
pref.save
else
@ -303,11 +303,11 @@ class TracesController < ApplicationController
end
def default_visibility
visibility = current_user.preferences.where(:k => "gps.trace.visibility").first
visibility = current_user.preferences.find_by(:k => "gps.trace.visibility")
if visibility
visibility.v
elsif current_user.preferences.where(:k => "gps.trace.public", :v => "default").first.nil?
elsif current_user.preferences.find_by(:k => "gps.trace.public", :v => "default").nil?
"private"
else
"public"