Ruby on rails 如何在创建表后在rails应用程序的sqlite3开发数据库中向列添加值

Ruby on rails 如何在创建表后在rails应用程序的sqlite3开发数据库中向列添加值,ruby-on-rails,ruby,Ruby On Rails,Ruby,嗨,我有一个rails应用程序,它有一个名为“listings”的表。此表有一个名为“城市”的列。但是该列现在没有数据,所有内容都为空。我想将字符串“notavailable”添加到此表中所有行的列值中。我该怎么做 我尝试使用sql将其直接添加到DB中,但没有效果 所以我想我必须使用rails迁移命令来实现这一点。但我找不到确切的命令。我知道是这样的 rails generate migration ?? 有人能帮我一下吗 谢谢在告诉你如何用Rails来实现这一点之前,我想请你考虑将这种表示逻

嗨,我有一个rails应用程序,它有一个名为“listings”的表。此表有一个名为“城市”的列。但是该列现在没有数据,所有内容都为空。我想将字符串“notavailable”添加到此表中所有行的列值中。我该怎么做

我尝试使用sql将其直接添加到DB中,但没有效果

所以我想我必须使用rails迁移命令来实现这一点。但我找不到确切的命令。我知道是这样的

rails generate migration ??
有人能帮我一下吗


谢谢

在告诉你如何用Rails来实现这一点之前,我想请你考虑将这种表示逻辑硬编码到数据库模式中。您可以在模型级别执行此操作,只需覆盖此字段的访问器

def city
  read_attribute("city") || "Not Available"
end
将此信息放入数据库可能会导致问题。例如,您将无法再快速判断哪些行具有
city
的默认值

如果确定要执行此操作,请在迁移中添加:

change_column :listings, :city, :default => "Not Available"

非常感谢你的帮助。是的,我正在学习rails,这是我的开发环境。当我创建生产模型时,我将遵循您的建议。现在,我只需要这些值来测试依赖于这些值的功能。请记住,如果添加此迁移,生产环境的默认值也将在此处“不可用”。我运行了以下迁移命令:“rails生成迁移更改_column:listings,:city,:default=>“Not Available”。这起作用了,然后我添加了:“rake db:migrate”。它给我的错误是表“listings”已经存在。它试图创建一个名为“listings”的表“而不是改变现有的表。有什么建议吗?以下是控制台输出的前几行,错误为:==CreateListings:迁移======================================================================--create_table(:listings)rake中止!发生错误,此迁移和所有后续迁移都已取消:只需运行
rails genearte migration SetDefaultForCityInListings
。这将在
/db/migrate
中创建一个名为
set\u default\u的文件,用于清单中的城市\u[timestamp]
。然后,修改该文件以包含上面的行。