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

다음과 같이 사용할 수 있습니다 :

액티브는 :: 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 
관련 문제