Rails - 数据迁移与DB中的值

时间:2009-12-18 17:30:48

标签: ruby-on-rails database migration

我对下拉列表中的值来自哪里有疑问:

我有一个迁移,它使用一些初始值设置原始表:

add_column :contracts, :signature_status_id, :integer

# lookup data
sig = SignatureStatus.new(:name => "Delivered")
sig.save!
sig = SignatureStatus.new(:name => "Signed")
sig.save!

我有一个名为signature_statuses的表,其中包含更新的值:

id, name
1, 'Delivered; awaiting signature'
2, 'Delivered; awaiting full execution'
3, 'Terms being negotiated'
4, 'Fully executed and filed'

我有一个表单,其中包含用于提取签名状态的代码:

<%= collection_select(:contract, :signature_status_id, @signature_statuses, :id, :name) %>

当我希望它来自数据库时,集合选择正在拉入“已签名”和“已交付”。我该如何做到这一点。

注意:我认为数据是手动编辑而不是迁移,但我不确定。我还搜索了“已签名”和“已发送”的代码,但它出现的唯一地方是迁移。

4 个答案:

答案 0 :(得分:0)

我只是想知道如何在signature_statuses表中获取该值列表?您在查询开发数据库吗?您的应用程序是否在开发模式下运行database.yml文件是否正确设置为指向您的开发数据库?

您也可以发布填充@signature_statuses变量的控制器代码。

更多信息,我相信人们将能够提供帮助。

答案 1 :(得分:0)

嗯,这有点奇怪,但我怀疑如下:在你的name模型中可能有一个名为signature_status的方法,它覆盖了默认值,并返回yesno

答案 2 :(得分:0)

调试这个的关键是看看

 @signature_statuses

正在控制器中设置。如果它从数据库中拉出来,那就是数据库中的内容。我想知道是否涉及多个数据库,您的迁移更新了开发数据库,​​但是您正在运行针对生产的查询(或类似的东西)。

答案 3 :(得分:0)

事实证明我需要运行“rake db”并修复它。