RoR:ActiveRecord返回null对象

时间:2012-02-25 13:46:03

标签: ruby-on-rails activerecord

下面的代码出错了(未定义的方法`org_id'代表nil:NilClass)。当查询在我的控制器中运行时,DB中没有符合条件的记录(我确定了这一点),但仍返回ActiveRecord对象。

如何在不满足条件的情况下保存代码/时间并确保不返回对象?感谢您的时间和帮助,

org_role = OrgRole.where("user_id = ? AND role_id = ?", current_user.id, 2)

  if org_role

    logger.debug "***"

    logger.debug org_role[0].org_id  #errors here

    logger.debug "***"

  else

    logger.debug "***"

    logger.debug "NOTHING FOUND"

    logger.debug "***"

  end

3 个答案:

答案 0 :(得分:1)

ActiveRecord :: Relation.where返回一个对象数组(表示与底层SQL语句的where子句匹配的行)。

支票if org_role可能应为if org_role.firstif not org_role.empty?

答案 1 :(得分:0)

您可以按如下方式使用它:

if org_role.nil? 
....
else
....
end

答案 2 :(得分:0)

if org_role.any?
  logger.debug "FOUND"
  logger.debug org_role.first.org_id
  logger.debug org_role.collect(&:org_id).inspect
else
  logger.debug "NOTHING FOUND"
end