Множество before_action вызывает плохой стиль кода?

Я работаю над приложением с контроллером, у которого есть много before_actions. Большинство из них связаны друг с другом переменными экземпляра, которые они задают. Например:

def first_action
  @first_variable = Something.new
end

def second_action
  if @first_variable
    @second_variable = Other.new
  end
end

Контроллер выглядит следующим образом:

class ExampleController < ApplicationController
  before_action :first_action, only: [:index, :show, :create]
  before_action :second_action, only: [:index, :show, :create]
  before_action :third_action, only: [:index, :show, :create]
  before_action :fourth_action, only: [:index, :show, :create]
  before_action :fifth_action, only: [:index, :show, :create]
  before_action :sixth_action, only: [:index, :show, :create]
  before_action :seventh_action, only: [:index, :show, :create]

  def index
    # some code
  end

  def show
    # some code
  end

  def create
    # some code
  end

  private

  # all of the before_action methods
end

Мне очень трудно понять с моей точки зрения. Каждый из этих методов имеет много кода. Кроме того, есть контроллеры, которые наследуют от этого, а также используют часть или все эти действия.

Я слышал, что лучше быть явным в отношении загруженных переменных в каждом методе, но это:

class ExampleController < ApplicationController

  def index
    first_action
    second_action
    third_action
    fourth_action
    fifth_action
    sixth_action
    seventh_action
    # some code
  end

  def show
    first_action
    second_action
    third_action
    fourth_action
    fifth_action
    sixth_action
    seventh_action
    # some code
  end

  def create
    first_action
    second_action
    third_action
    fourth_action
    fifth_action
    sixth_action
    seventh_action
    # some code
  end

  private

  # all of the before_action methods
end

выглядит не намного лучше. Есть ли способ реорганизовать его для большей удобочитаемости или я должен придерживаться текущего решения?

Ответ 1

Нет ничего плохого в том, что у вас есть несколько before_actions, но похоже, что у вас есть случай, когда они могут быть собраны в одно действие?

Ответ 2

Ваше текущее решение в порядке. Вы можете использовать лайк, чтобы избежать нескольких вызовов методов

before_action :first_action, :second_action, :third_action, :fourth_action, :fifth_action, :sixth_action, :seventh_action, only: [:index, :show, :create]