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
我收到 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