【发布时间】:2015-12-29 11:23:44
【问题描述】:
在我的迁移文件中:
class AddEnabledToJob < ActiveRecord::Migration
def change
add_column :jobs, :enabled, :boolean, default: 0
end
end
但是在我看来,我正在寻找每个 :enabled => false 对象:
<% @jobs.where(enabled: false).order("id DESC").each do |job| %>
这不起作用。如果我将其更改为:
<% @jobs.where(enabled: 0).order("id DESC").each do |job| %>
这很令人困惑,因为我在应用程序的其他位置将 enabled 值更改为 false,所以我有一些带有 enabled: false 的 Job 对象和一些带有 enabled: 0 的 Job 对象。我该如何纠正这种情况以及为什么会发生这种情况?
编辑:
为了解决这个问题,我已经通过控制台填充了所有作业 (Job.all),我看到虽然新记录是使用 default: 0 创建的,但它们的值是 false。那么为什么@jobs.where(enabled: false) 无法检索到它们呢?
【问题讨论】:
-
这可能是因为 activercord 将 0 转换为 false 但是当您说 .where(enabled: 0) 由您的数据库本身处理 postgres 或您使用的任何内容时,它会执行查询搜索0 不是假的。
标签: mysql ruby-on-rails ruby-on-rails-4