Вы можете писать модули и включать их. Начните с создания файла в lib
, может быть, так:
module WidgetExtras
def index_of_deleted(widget)
# implementation
end
end
Затем в вашем WidgetsController
рядом с вершиной просто добавьте:
include WidgetExtras
Возможно, вы захотите более явно именовать пространство ваших модулей (просто вложите их).
Редактировать
Я не уверен, что действительно стоит абстрагироваться от того, сколько моделей существует, которым нужна эта функциональность? Вместо этого вы можете написать помощника, чтобы найти удаленные элементы:
module ApplicationHelper
def deleted_for_class( klass )
klass.order('name').deleted
end
end
Но тогда почему бы просто не создать область для «удаленного Model
по имени» ...
Редактировать 2
Вы можете написать реализацию для установки переменной экземпляра ...
def index_of_deleted( widget_name )
klass = Kernel.const_get(widget_name.classify)
instance_variable_set( "@#{widget_name.pluralize}", klass.order('name').deleted )
end