【发布时间】:2012-09-27 01:50:18
【问题描述】:
我正在尝试编写迁移,它看起来像这样:
class AddStatusToWorks < ActiveRecord::Migration
def self.up
change_table :works do |t|
t.string :status
end
end
def self.down
change_table :works do |t|
t.remove :status
end
end
end
问题是,我想根据表中已有的布尔值“完成”为“状态”设置不同的默认值。如果完成 = true,则状态 =“完成”。如果没有,status = "work in progress." (我想要一个字符串而不是作为布尔值保持完整的原因是因为我希望那里能够有两个以上的状态可能性。)知道怎么做吗?我是否像这样在其中粘贴一个 if 语句
change_table :works do |t|
t.string :status
if (:complete == true)
:value => "complete"
else
:value => "wip"
end
呃,看起来不太对劲。我用谷歌搜索了一下,发现你可以设置 :default 值,但这并不是我想要的。任何想法/帮助都会很可爱。谢谢!
【问题讨论】:
-
所以要根据
complete的当前值来初始化status?新行呢? -
呃...新行?抱歉,我在这方面有点不知所措。
-
等等!你的意思是新行作为未来的数据库条目吗?在这些情况下,用户将在他们创建新作品时设置一个值。只是数据库中已经有很多条目,我想知道是否有自动设置它们的值的方法。
-
是的,这就是我所说的新行。
-
嘿,我知道我错过了一些东西。但我最终明白了,这很重要,对吧?现在查看您的其他回复!
标签: ruby-on-rails ruby migration rails-migrations