mysql - Rails migration default 0 是不是false?

标签 mysql ruby-on-rails ruby-on-rails-4

在我的迁移文件中:

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/

相关文章:

mysql - null 的警报数量小于特定值

mysql - 想要将我的 web 应用程序转换为具有数据持久性的桌面应用程序

python - 查询产生不正确的结果

ruby-on-rails - 数据库中的切换属性

javascript - 如何将 Selectize.js 安装到我的 Rails 应用程序中?

mysql - SQL 将 a 引用到 b,将 b 引用到 a

ruby-on-rails - 在Heroku Rails应用程序中使用代理或Tor隐藏IP

ruby-on-rails - 在 rails 4 中渲染之前设置响应状态

javascript - 测试javascript点击功能capybara附加文件图片上传

ruby-on-rails - Rails 渲染 json 包括带参数的方法