讓我們假設我有以下型號:Ruby on Rails:在將模型中的記錄返回給控制器之前,過濾列表中的記錄?
class Computer < ActiveRecord::Base
end
,我檢索所有的計算機在我的控制器是這樣的:
@computers = Computer.all
現在我添加一個功能停用某些計算機和過濾,如停用計算機這樣的:
class Computer < ActiveRecord::Base
scope :not_deactivated, -> { where('deactivated IS NULL OR deactivated = ?', false) }
end
,並在我的控制器:
@computers = Computer.all.not_deactivated
該方法的問題是我必須在所有控制器中添加not_deactivated
。
是否有可能在模型中做這個過濾器,所以我不必觸摸控制器?
我相信這樣做。但是您可以在控制器上執行before_action:not_deactivated行。然後把not_deactivated方法放在控制器中。 –