RoR - 跟踪索引方法中的无效ID

时间:2016-08-30 18:09:52

标签: ruby-on-rails ruby

我希望我的index()方法告诉我何时传入了无效的ID,但我不希望该页面以500为单位进行barf。我想(并已设置)索引方法,以跳过模型ID,它不知道 - 但是,我想以某种方式跟踪那些无效的模型ID。

authorize :read
def index
  modelIds = []
  validIdList = ""
  models = ModelType.get_all_model_names()
  models.each do |model|
    id = ModelType.get_id(model)
    modelIds.push(id)
  end
  validIdList = modelIds.join(', ')
  @filter = "model_type_id IN (#{validIdList})"
end

如何跟踪index()遇到的无效ID?

1 个答案:

答案 0 :(得分:1)

如果您有标准资源resources :something,那么如果您的意思是无效的路线

/something/#{invalid_id}

然后你不会在索引动作中捕获这些,它们将在show动作中。您可以在before_filter中完成此操作,以便略微减少show动作中的条件逻辑数量。

在控制器中

before_filter :check_valid_id, only: [:show]

并在控制器的私人部分

def check_valid_id unless find_something log(params[:id]) redirect_to :index end end

您可能还想在其他成员路线中检查check_valid_id,例如编辑,更新,销毁并提供ID无效的Flash消息