Newbie rails问题:在.each循环中处理nil值的优雅方法?

时间:2010-10-12 01:35:46

标签: ruby-on-rails

此刻只是干涉Rails,并努力弄清楚如何逃避“当你没想到它时你有一个零对象”的错误。目前我正在用“除非object.nil?”逃避他们每个人。消息,但它变得非常难看。一个很好的例子:

unless params[:professiontypeinfo].nil?
  unless params[:professiontypeinfo][professiontypeid].nil?
    unless params[:professiontypeinfo][professiontypeid]["industrybodies"].nil?
        @professional.professional_specialties.find_by_profession_type_id(professiontypeid).industry_bodies = IndustryBody.find_all_by_id(params[:professiontypeinfo][professiontypeid]["industrybodies"])
    end
  end
end

Soo ......逃避这些事情的正确/优雅方式是什么?

2 个答案:

答案 0 :(得分:4)

当请求的密钥丢失时,

Hash[]返回false,所以

if params[key]

如果false没有params

将返回key

And-ed条件短路(即在第一个条件为假时停止评估),因此即使缺少key,以下内容也会起作用:

if params[key] && params[key][sub_key]

答案 1 :(得分:2)