【问题标题】:Rails-undefined method `id' for nil:NilClass用于 nil:NilClass 的 Rails 未定义方法“id”
【发布时间】:2020-06-10 14:11:34
【问题描述】:

我收到 nil:NilClass 的未定义方法“id”错误。我需要找到 oidValue 的 id。如果 oidValue 的 id 为 nil,我需要搜索 oid2 表以获取 oidValue。如何在此处检查 nil。下面的代码是我正在使用的。如果 oidId 为 nil,则不工作。

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

【问题讨论】:

  • 您可以将其更改为oid = Oid1.find_by(oid: oidvalue) || Oid2.find_by(oid: oidvalue),然后与oid 对象交互(仍可能是nil)

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4


【解决方案1】:

这里有两个例子说明如何做到这一点。

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)

“我正在尝试这个但得到空值。我想要 NULL 和 Get Values 组名”

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

查询时: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

【讨论】:

  • 我还有一个疑问
  • groupName=OidGroup.where("group_type is NULL AND group_type =(?) ","Get").pluck(:groupname)
  • 我正在尝试这个但得到空值。我想要 NULL 和 Get Values 组名
  • 怎么做?你能帮忙吗?
  • @SubashiniRaja 酷!!如果您认为它有效,那么投赞成票会很棒:)
【解决方案2】:

使用安全导航操作符,如果属性不存在则返回 nil。

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

【讨论】:

  • 不工作。我试过@oidList= Oid1.where(:oid => oidvalue) if @oidList.present? oidId = Oid1.find_by(oid: oidvalue).id.to_s else Oid2.find_by(oid: oidvalue).id.to_s end
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多