From 6e4c7d62118d5d1f2e966950edfdbc80cebd4d7c Mon Sep 17 00:00:00 2001
From: Matt Jankowski <mjankowski@thoughtbot.com>
Date: Thu, 18 May 2017 21:11:23 -0400
Subject: [PATCH] Conditional validations no longer accept strings for
 if/unless (#3124)

---
 app/controllers/remote_follow_controller.rb | 6 +++++-
 app/lib/application_extension.rb            | 2 +-
 app/models/account.rb                       | 4 ++--
 app/models/conversation.rb                  | 2 +-
 app/models/status.rb                        | 6 +++---
 app/models/user.rb                          | 2 +-
 6 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/app/controllers/remote_follow_controller.rb b/app/controllers/remote_follow_controller.rb
index 625ce14886..2988231b1d 100644
--- a/app/controllers/remote_follow_controller.rb
+++ b/app/controllers/remote_follow_controller.rb
@@ -4,7 +4,7 @@ class RemoteFollowController < ApplicationController
   layout 'public'
 
   before_action :set_account
-  before_action :gone, if: -> { @account.suspended? }
+  before_action :gone, if: :suspended_account?
 
   def new
     @remote_follow = RemoteFollow.new(session_params)
@@ -34,4 +34,8 @@ class RemoteFollowController < ApplicationController
   def set_account
     @account = Account.find_local!(params[:account_username])
   end
+
+  def suspended_account?
+    @account.suspended?
+  end
 end
diff --git a/app/lib/application_extension.rb b/app/lib/application_extension.rb
index 93c0f42f06..1d80b8c6d3 100644
--- a/app/lib/application_extension.rb
+++ b/app/lib/application_extension.rb
@@ -4,6 +4,6 @@ module ApplicationExtension
   extend ActiveSupport::Concern
 
   included do
-    validates :website, url: true, unless: 'website.blank?'
+    validates :website, url: true, if: :website?
   end
 end
diff --git a/app/models/account.rb b/app/models/account.rb
index f418a0f8b2..726e6c127c 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -52,10 +52,10 @@ class Account < ApplicationRecord
   has_one :user, inverse_of: :account
 
   validates :username, presence: true
-  validates :username, uniqueness: { scope: :domain, case_sensitive: true }, unless: 'local?'
+  validates :username, uniqueness: { scope: :domain, case_sensitive: true }, unless: :local?
 
   # Local user validations
-  with_options if: 'local?' do
+  with_options if: :local? do
     validates :username, format: { with: /\A[a-z0-9_]+\z/i }, uniqueness: { scope: :domain, case_sensitive: false }, length: { maximum: 30 }
     validates :display_name, length: { maximum: 30 }
     validates :note, length: { maximum: 160 }
diff --git a/app/models/conversation.rb b/app/models/conversation.rb
index 3715e1049d..08c1ce9458 100644
--- a/app/models/conversation.rb
+++ b/app/models/conversation.rb
@@ -10,7 +10,7 @@
 #
 
 class Conversation < ApplicationRecord
-  validates :uri, uniqueness: true, if: :uri
+  validates :uri, uniqueness: true, if: :uri?
 
   has_many :statuses
 
diff --git a/app/models/status.rb b/app/models/status.rb
index 760ecc9284..70021eb65b 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -50,10 +50,10 @@ class Status < ApplicationRecord
   has_one :notification, as: :activity, dependent: :destroy
   has_one :preview_card, dependent: :destroy
 
-  validates :uri, uniqueness: true, unless: 'local?'
-  validates :text, presence: true, unless: 'reblog?'
+  validates :uri, uniqueness: true, unless: :local?
+  validates :text, presence: true, unless: :reblog?
   validates_with StatusLengthValidator
-  validates :reblog, uniqueness: { scope: :account }, if: 'reblog?'
+  validates :reblog, uniqueness: { scope: :account }, if: :reblog?
 
   default_scope { order(id: :desc) }
 
diff --git a/app/models/user.rb b/app/models/user.rb
index 66a8edfc15..7cf3a1290e 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -45,7 +45,7 @@ class User < ApplicationRecord
   belongs_to :account, inverse_of: :user, required: true
   accepts_nested_attributes_for :account
 
-  validates :locale, inclusion: I18n.available_locales.map(&:to_s), unless: 'locale.nil?'
+  validates :locale, inclusion: I18n.available_locales.map(&:to_s), if: :locale?
   validates :email, email: true
 
   scope :recent,    -> { order(id: :desc) }
-- 
GitLab