2012-02-25 132 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