在我的迁移文件中:
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)
无法检索它们?
最佳答案
使用 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
关于mysql - Rails migration default 0 是不是false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34509973/