2012-02-25 123 views
0

下面的代码出错了(未定义的方法`org_id'为nil:NilClass)。当查询在我的控制器中运行时,数据库中没有符合条件的记录(我确信这一点),但仍然返回ActiveRecord对象。RoR: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 

回答

1

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

支票if org_role也许应该if org_role.firstif not org_role.empty?

+0

的感谢!如果不是org_role.empty?工作。 – user464180 2012-02-25 17:08:20

0

可以按如下方式使用它:

if org_role.nil? 
.... 
else 
.... 
end 
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