gpt4 book ai didi

ruby-on-rails - ruby rails : how to migrate changes made on models?

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:18 24 4
gpt4 key购买 nike

在 Rails 应用程序中,如何迁移我在模型中所做的更改?例如,我知道如果我使用命令“rails g model Person name:string”创建一个模型,也会创建一个迁移。但是,如果在这一步之后我转到创建的模型“Person”并添加一个新属性,这个新属性是否会自动添加到迁移中以便以后在数据库中持久化?还是我从错误的角度看待这个问题,应该将属性添加到迁移,然后再添加到模型?

问候

最佳答案

您不能真正向模型“添加”属性,您可以通过创建迁移文件并运行它来实现——Rails 根据数据库中的列来确定模型具有的属性。但是,如果您希望能够通过批量分配更新属性,您确实需要向模型添加一行以将该属性列入白名单。这就是为什么您经常会在 activerecord 模型中看到这样一行:

attr_accessible :name

但这是可选的,并不是添加属性所必需的。

要将新属性实际添加到您的模型中,首先创建一个迁移:

rails g migration AddAddressToPerson address:string

这将在 db/migration/目录中创建迁移文件。 (表格“AddXXXToYYY”和“RemoveXXXFromYYY”被 rails 理解为“向模型 XXX 添加(或删除)一个新列”,详见 documentation)。在这种情况下,我添加了一个名为 address 的属性,它是一个字符串,但您可以将其更改为您想要的任何内容。

然后要实际更新数据库,您需要使用 rake 运行迁移:

rake db:migrate

最后,如果您想允许对该属性进行批量赋值,请将该属性添加到 attr_accessible 的参数列表中:

attr_accessible :name, :address

应该这样做。

关于ruby-on-rails - ruby rails : how to migrate changes made on models?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12944962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com