在迁移文件中我有:
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
所以我有一些Job对象enabled: false
而有些enabled: 0
。我怎样才能纠正这个问题?为什么会这样?
修改
为了扩展这个问题,我已经通过控制台填充了所有作业(Job.all
),我发现使用default: 0
创建新记录时,它们的值为false
。那么为什么@jobs.where(enabled: false)
无法检索它们呢?
答案 0 :(得分:1)
使用change_column_default
将默认值更改为false,并在允许旧记录的每个0为false之后:
def up
change_column_default :jobs, :enabled, false
Job.where(enabled: 0).update_all(enabled: false)
end
def down
change_column_default :jobs, :enabled, 0
end