Sql 数据库中的Null vs Nil

Sql 数据库中的Null vs Nil,sql,ruby-on-rails,sqlite,Sql,Ruby On Rails,Sqlite,我在rails应用程序中使用一个SQLite3数据库,试图解决这个问题时非常沮丧 我希望以不同的方式填充复选框,具体取决于表单(_form.html.erb)是在update中呈现还是在create so中呈现: <% if @foo.new_record? %> <% query = "association_id == nil" %> <% else %> <% query = "" %> <% end %&g

我在rails应用程序中使用一个SQLite3数据库,试图解决这个问题时非常沮丧

我希望以不同的方式填充复选框,具体取决于表单(_form.html.erb)是在update中呈现还是在create so中呈现:

  <% if @foo.new_record? %>
    <% query = "association_id == nil" %>
  <% else %>
    <% query = "" %>
  <% end %>
这应该做的是给我所有的关联作为更新的复选框,只有那些在创建时还没有关联id的

如果我将查询替换为
:association\u id=>nil
,我将获得创建所需的结果。 如果我将查询替换为
Association.all
,我将得到更新的结果。 我可以在检查新记录时手动复制所有代码?但我的代码已经相当长和复杂,这将使它加倍。所以我只想向where调用传递一个字符串(查询)。这就是我遇到麻烦的地方

当我查看rails控制台并进行直接SQL查询时,我注意到没有关联id的返回文件将显示为
关联id:nil
。所以我尝试匹配nil,但这给了我一个来自SQL的“unknown column:nil”错误。当我尝试匹配SQL NULL时,它找不到任何内容

nil属性是如何存储在数据库中的?如何使用字符串查询以查找它?

您应该这样做

<% query = "association_id is null" %>

Association.where(:association_id => nil) 
你应该这样做

<% query = "association_id is null" %>

Association.where(:association_id => nil) 
你应该这样做

<% query = "association_id is null" %>

Association.where(:association_id => nil) 
你应该这样做

<% query = "association_id is null" %>

Association.where(:association_id => nil) 

谢谢,我基本上试过除这一个之外的所有其他变体汉克我基本上试过除这一个之外的所有其他变体汉克我基本上试过除这一个之外的所有其他变体汉克我基本上试过除这一个之外的所有其他变体