Describe features at a high level rather than querying the user model directly

Context ๐Ÿ”—

Problem ๐Ÿ”—

Solution ๐Ÿ”—

Bad ๐Ÿ”—

class PaidReportsController < ApplicationController
  before_action :require_paid, only: :create

  def create
    # ...
  end

  def require_paid
    return unless current_user.has_paid_subscription? && current_user.investor?

    # ...
  end
  # ...
end

Good ๐Ÿ”—

class PaidReportsController < ApplicationController
  before_action :require_paid, only: :create

  def create
    # ...
  end

 def require_paid
    return if feature.disabled?("membership.reporting.report_access_allowed", user: current_user)

    # ...
  end
  # ...
end