繁体   English   中英

将默认值添加到列中,具体取决于Rails中模型中另一个字段的值3.2.13数据库迁移

[英]Adding Default Value to Column Depending on the Value of Another Field in A Model In A Rails 3.2.13 Database Migration

我的模型中已经有一个日期字段(字符串)。 我计划添加具有不同长日期格式的其他字符串字段,以在与现有日期字段相关的文本搜索中使用。 这是为了方便视觉障碍者的文本搜索。

我做过类似的事情,但效果很好。

add_column :media_libraries, :media_year, :string, default: Time.now.year

但是,我要执行的操作是添加日期字段,并使用现有日期字段的值默认为新日期字段。

我在其中一个视图中有以下代码,该代码具有要用于初始化新的长日期字段的值的字段。

media_created.to_date

我可以在迁移中执行类似的操作,在该迁移中可以根据记录中另一个字段的值设置默认值吗?

add_column :media_libraries, :media_created_en, :string, default: :media_created.to_date.strftime("somedateformat")

我已经阅读了另一篇文章,其中介绍了如何在Rails迁移中添加数据库列,并根据另一列(其中一个答案建议在迁移中进行查询) 填充它 这是我要实现的尝试。 但是,其他发布在Stack Overflow上的人则认为,在迁移中引用其他字段不是一个好主意。 对我来说,因为这是一次性的事情,所以我不担心这些问题。

MediaLibrary.update_all(media_created_en: :media_created.to_date.strftime("%B %d, %Y"), media_created_fr: :media_created.to_date.strftime("%d %B %Y"), media_created_pt: :media_created.to_date.strftime("%d %B %Y"), media_created_es: :media_created.to_date.strftime("%d de %B de %Y"))

我想对现有记录执行此操作,因为我要更新1000多个记录。 我将代码放入模型或控制器中,以设置字段以供将来对模型进行更新。

我到处都看过,但是只能找到用于默认设置或上面一个示例的内置函数。 API除了“ options {}”外没有其他说明。 如果无法做到这一点,我准备在我的应用程序的admin部分编写一种方法来执行此操作。

任何帮助将不胜感激。 我会继续寻找。

我一直在研究,却一无所获,因此决定尝试进行一些迁移。 我无法在默认值中成功合并模型中的字段。 由于时间紧迫,我决定只在迁移中创建字段,然后在控制器中编写一个方法来更新模型中的字段。 现在,我将编写代码来更新要添加的记录的字段,以确保正确更新了字段。

如果有人对此有解决方案,请在此处发布,但我正在继续。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM