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

前端之家收集整理的这篇文章主要介绍了红宝石 – 轨道 – 条件为零的条件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_1@我发现使用符号的位置: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
原文链接:https://www.f2er.com/ruby/272147.html

猜你在找的Ruby相关文章