加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

红宝石 – 轨道 – 条件为零的条件

发布时间:2020-12-16 19:53:07 所属栏目:百科 来源:网络整理
导读:我发现使用符号的位置:my_id =没有使用老学校吗?是不同的.有人可以解释一下为什么吗 MyTable.where("my_id = ? ",nil).firstSELECT `my_tables`.* FROM `my_tables` WHERE (my_id = NULL ) LIMIT 1 没有任何数据 MyTable.where(:my_id = nil).firstSELECT
我发现使用符号的位置:my_id =>没有使用老学校吗?是不同的.有人可以解释一下为什么吗
MyTable.where("my_id = ? ",nil).first
SELECT `my_tables`.* FROM `my_tables` WHERE (my_id = NULL ) LIMIT 1

没有任何数据

MyTable.where(:my_id => nil).first
SELECT `my_tables`.* FROM `my_tables` WHERE (`my_tables`.`my_id` IS NULL) LIMIT 1

获取my_id为空的数据.

在铁轨上使用最好的做法是什么?

我想我没有清楚我的问题.
在我的rails应用程序中,request参数为nil.
现有编码是MyTable.where(:my_id => params [:id])
在表中,有很多有my_id为空的记录.
因此,表中的第一个记录没有意识到.
首先,是的,这是表中不清楚的数据的问题.

解决这个问题.
我找到两个解决方案

解决方案1

if params[:id].present?
  MyTable.where(:my_id => params[:id]).first
end

解决方案2

MyTable.where("my_id = ? ",nil).first

如你所知,如果我们(如果条件越来越多),我们的应用程序会变慢,它不会是功能性编程.
当我尝试解决方案2时,我感到惊讶,因为我期望它应该得到相同的结果.

解决方法

正确的SQL语法是my_id IS NULL,因此如果您将第一个代码段更改为以下内容,它将工作:
MyTable.where("my_id IS ?",nil).first

两种语法都是完美的.这取决于你自己的喜好.但是,如果它是一个参数,并且您不知道是否为零,则最好使用:

MyTable.where(:my_id => parameter).first

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读