使用重用的控制器方法重构 Rails 4 before_action 以提高代码速度

refactoring Rails 4 before_action for code speed with reused controller methods

我已经学习 Rails 一段时间了,我想知道在其他方法中包含可重用方法的最佳方法是什么。我对某些代码使用 before_action,但我想知道是否应该将看起来像“Fig.A”的代码转换为在操作之前使用更多(图 B)。这是最佳做法吗?它会提高速度吗?

Fig.A
SomeController.rb

def some_action
  #logic
end

def my_method
 some_action
  #logic
end

def my_other_method
 some_action
  #logic
 end

与使用前操作相比

Fig.B
SomeController.rb

before_action  :some_action, only: [:my_method, :my_other_method]

def some_action
  #logic
end

def my_method
  #logic
end

def my_other_method
  #logic
end

我问这个问题是因为我正在尝试掌握最佳实践和干净的代码。哪个是首选方式?

你在这里问了两个不同的问题。一种抽象方法的好方法,因此它们是可恢复的,将采用模块或超类的形式,您的子类从中继承行为。想想一个 rails 模型继承 ActiveRecord::Base 以及它如何继承数据库访问方法等

您可能是说您在 application_controller 中定义了之前的操作方法,这很好,但是将它们限制在某些控制器中使用不一定会提高性能。如果它们很重并且您只希望它们在某些控制器上实例化,模块将是更好的方法,但它们必须足够大和复杂才能在不包含它们的控制器中获得性能。