Rails-nil:NilClass 的未定义方法“id”

Rails-undefined method `id' for nil:NilClass

我收到 nil:NilClass 的未定义方法“id”错误。我需要找到 oidValue.if id 的 id 对于 oidValue 是 nil 我需要搜索 oid2 table 获取 oidValue.How 来检查 nil here.Below 代码是我 using.Not 如果 oidId 为 nil,则工作。

   oidId = Oid1.find_by(oid: oidvalue).id.to_s
    if oidId.nil?
      oidId = Oid2.find_by(oid: oidvalue).id.to_s
    end

使用安全导航运算符,如果该属性不存在,它将 return nil。

oidId = Oid1.find_by(oid: oidvalue)&.id

这里有两个如何操作的例子。

if Oid1.exists?(oid: oidValue)
  oidId = Oid1.find_by(oid: oidValue).id.to_s
else
  oidId = Oid2.find_by(oid: oidValue).id.to_s
end

或一行:

oidId = Oid1.exists?(oid: oidValue) ?
          Oid1.find_by(oid: oidValue).id.to_s : Oid2.find_by(oid: oidValue).id.to_s

这里重要的是保持上下文的可读性。

注意:你应该经常测试。

希望对您有所帮助。

- - - - - - - - - - - - - - - - - -

编辑:关于您的评论:

groupName = OidGroup.where("group_type is NULL AND group_type =(?) ", "Get").pluck(:groupname)

"I am trying this but getting empty values.I want both NULL and Get Values groupnames"

注意:如果查询没有找到满足这些条件的记录,它将return一个空数组。结果:[]

查询时:OidGroup.where("group_type is NULL AND group_type =(?) ","Get").pluck(:groupname)

你得到:SELECT "oid_groups"."groupname" FROM "oid_groups" WHERE (group_type = NULL and group_type = ('Get'))

我认为正确的做法是:OidGroup.where("group_type = ? and group_type = ?", nil, "Get").pluck(:groupname)

获得:SELECT "oid_groups"."groupname" FROM "oid_groups" WHERE (group_type = NULL and group_type = 'Get')

您可以在此处查看文档:Method Where