可以从父类中包含的模块中调用父类的子类的私有方法,尤其是在涉及到Rails中的ApplicationController,Controllers和lib模块时?从rails的父类中包含的模块中调用父类的子类的私有方法是否可行?
考虑是否需要更改控制器名称的方法名称以反映型号名称(至第条)的更改。
我觉得这是非常糟糕的编码,并想知道想着从Rails应用程序这个
实例什么社区:
/lib/some_module.rb
module SomeModule
include SomeModuleResource
def filtering_method
calling_method
end
def calling_method
fetch_object
end
end
/lib目录/ some_module_resource.rb
module SomeModuleResource
def fetch_object
note
end
end
/app/controllers/application_controlle r.rb
class ApplicationController < ActionController::Base
include SomeModule
before_action :filtering_method
end
/app/controllers/notes_controller.rb
class NotesController < ApplicationController
def show
end
private
def note
@note ||= Note.find(param[:id]))
end
end
我想知道你想达到什么目的?你为什么不在'show'方法中调用'note'或者在控制器中定义'before_action:note'。恕我直言,这将更易读,更容易理解。 – spickermann
我在问这个,因为我在我正在研究的应用程序中看到过这段代码,我需要向其他人证明这是错误的编码方式。 – Satya
你问过其他开发者为什么这么做吗?为什么他们认为用两个模块和几个间接步骤替换单行代码是一个好主意。我同意这个例子乍一看看起来很复杂,但是在决定引入这种复杂性的背后必定有一个理由或历史。 – spickermann