Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 在rails 3中,对ActiveRecord布尔字段的第一个请求的值为false,则为true_Postgresql_Activerecord_Ruby On Rails 3_Actionview - Fatal编程技术网

Postgresql 在rails 3中,对ActiveRecord布尔字段的第一个请求的值为false,则为true

Postgresql 在rails 3中,对ActiveRecord布尔字段的第一个请求的值为false,则为true,postgresql,activerecord,ruby-on-rails-3,actionview,Postgresql,Activerecord,Ruby On Rails 3,Actionview,我认为有这样的代码: <% @items.each do |item| %> <tr<%= raw(item.presence ? '' : ' class="opaque"') %>> ... <td><%= item.presence ? 'Yes' : 'No' %></td> </tr> <% end %> “存在”字段在第一项中仅为布尔值,为零 尽管第一个获取项的presence字段为ni

我认为有这样的代码:

<% @items.each do |item| %>
<tr<%= raw(item.presence ? '' : ' class="opaque"') %>>
...
<td><%= item.presence ? 'Yes' : 'No' %></td>
</tr>
<% end %>
“存在”字段在第一项中仅为布尔值,为零 尽管第一个获取项的presence字段为nil,但它不会像不是nil或true那样返回第一行的类attr,而是第二个检查返回正确的值“No”。在具有false或nil值的其他行中,它在两个检查中返回正确的值。是虫子,还是我做错了


Rails 3.0.0,Postgres 8.4添加?为了帮助

<% @items.each do |item| %>
<tr<%= raw(item.presence? ? '' : ' class="opaque"') %>>
...
<td><%= item.presence? ? 'Yes' : 'No' %></td>
</tr>
<% end %>

哦,谢谢。这真的很有帮助。但我仍然对这种奇怪的行为感到气馁,即同一个字段方法第一次给出了错误的值,其余部分给出了正确的值?强制AR将该值视为布尔值,在第一次调用中仍然无法获取class=opauqe?对不起,我的表达错误?答案中的方法始终正确。我不理解没有?的方法的行为。我也不确定。没有这个?AR只是将字段的值向上传递,然后三元if将其强制为布尔值。用这个?AR正在进行到布尔值的转换,因为不同的DB有不同的表示真假的方式,即tinyint0或tinyint1t'| | f'等。。您是否查看了数据库中的原始行,或者只是回显了item.presence以查看AR正在使用的内容。实际上,在数据库中,此字段为NULL,item.presence.inspect为nil
<% @items.each do |item| %>
<tr<%= raw(item.presence? ? '' : ' class="opaque"') %>>
...
<td><%= item.presence? ? 'Yes' : 'No' %></td>
</tr>
<% end %>