Rails:“当你没想到它时,你有一个零对象”

时间:2011-12-13 14:23:25

标签: ruby-on-rails ruby

在我的控制器中:

Article.author_ids_in(params[:filters][:author_ids])

这当然会返回一个错误(“你有一个零对象......”)如果那些特定的参数没有通过。这是模型方法:

def self.author_ids_in(filters)
  unless filters.nil?
    where(:author_id + filters)
  else
    scoped
  end
end

正如你所看到的,我已经为一个nil对象做好了准备,那么我怎样才能让Ruby允许nil被传递?

1 个答案:

答案 0 :(得分:3)

params [:filters]很可能是nil所以当你试图进入它时会引发异常[:author_ids]

在调用示波器之前进行检查,或者解除异常:

begin
  Article.author_ids_in(params[:filters][:author_ids])
rescue NoMethodError
  # do something else here
end