下面的代码出错了(未定义的方法`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
答案 0 :(得分:1)
ActiveRecord :: Relation.where返回一个对象数组(表示与底层SQL语句的where子句匹配的行)。
支票if org_role
可能应为if org_role.first
或if 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