对带有false值的ActiveRecord布尔字段的第一个请求在rails 3中给出true

时间:2010-11-29 21:15:42

标签: 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 %>

这是控制器中的请求:

@items = Item.where(:type_id => @type.id).order('brand ASC, name ASC').limit(limit).offset((@page-1)*limit)

'presence'字段只是bool,第一项是零 尽管第一个获取的项目的存在字段是nil,但它不返回第一行的类attr(如它不是nil或true),但第二个检查返回正确的值('No')。在具有false或nil值的其他行中,它在两个检查中都返回正确的值。这是一个错误,还是我做错了?

Rails 3.0.0,Postgres 8.4

1 个答案:

答案 0 :(得分:0)

确实添加了?在场帮助...

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