ruby中对可能出现的空查询做保险处理方式

在ROR中,有如下代码:“ is_liked = Like.where(chain_id: chain_data.id, user_id: current_user[:id]).first.is_like || false”,现在where查询语句有可能查不到,会导致报错,该怎么处理呢?

你可以使用.try()方法来避免当查询结果为空时的错误。这样,如果查询结果为空,它将返回nil而不是抛出异常。以下是完善后的代码:
is_liked = Like.where(chain_id: chain_data.id, user_id: current_user[:id]).first.try(:is_like) || false

或者,你也可以使用更简洁的操作符&.来完成相同的操作:
is_liked = Like.where(chain_id: chain_data.id, user_id: current_user[:id]).first&.is_like || false

无论哪种方法,都可以确保当查询结果为空时,代码不会抛出异常。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *、不使用NULL字段、合理创建索引、...
    怦然心_动阅读 3,146评论 1 4
  • Elasticsearch7学习笔记(上)[https://www.jianshu.com/p/29e5b1a7c...
    Vchar_Fred阅读 6,932评论 0 15
  • web应用程序会对用户的输入进行验证,过滤其中的一些关键字,这种过滤我们可以试着用下面的方法避开。 1、 不使用被...
    查无此人asdasd阅读 12,142评论 0 5
  • 说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *、不使用NULL字段、合理创建索引、...
    脆皮鸡大虾阅读 1,846评论 0 0
  • MySQL基础操作 创建数据库 创建数据库,该命令的作用: 如果数据库不存在则创建,存在则不创建。 创建RUNOO...
    少年_323a阅读 4,151评论 0 0