2012-02-25 17 views
0

以下のコードはエラーになります(定義されていないメソッドorg_idはnil:NilClassです)。私のコントローラでクエリが実行されても、条件を満たすレコードはDBにはありませんが、ActiveRecordオブジェクトが返されます。RoR:ActiveRecordはnullオブジェクトを返します

どのようにコード/時間を保存し、条件が満たされない場合にオブジェクトが返されないようにすることができますか?あなたの時間と支援のおかげで、

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

SQLステートメント)。

チェックif org_roleはおそらくif org_role.firstまたはif not org_role.empty?

+0

感謝する必要があります!そうでなければorg_role.empty?働いた。 – user464180

0

次のようにあなたがそれを使用することができます:

のActiveRecordは:: Relation.whereは、基礎となるのwhere句に一致した行を表すオブジェクトの配列を(返す
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 
関連する問題