如何在Ruby中向模型(ActiveRecord)添加新属性

时间:2017-09-05 14:58:29

标签: ruby-on-rails

我是Ruby on Rails的新手,我只想尝试为现有模型添加新属性。我必须向我的类添加一个新的布尔属性,该属性继承自:

ActiveRecord::Base

有人会一步一步解释如何做到这一点吗?

3 个答案:

答案 0 :(得分:2)

您可以生成新的迁移,指定它对应的属性和模型:

$ rails generate migration add_new_attribute_to_model new_attribute:type

这将生成如下的迁移:

class AddNewAttributeToModel < ActiveRecord::Migration[RailsVersion]
  def change
    add_column :model, :new_attribute, :boolean # boolean type attribute
  end
end

然后你可以坚持改变:

$ rails db:migrate

答案 1 :(得分:2)

您需要使用迁移才能将字段添加到数据库。创建这些文件的最简单方法是使用终端命令,但可以手动创建它们:

http://edgeguides.rubyonrails.org/active_record_migrations.html

每次添加迁移时,都需要将其应用于数据库,完成后:

rake db:migrate

当你运行它时,rails会遍历你已经应用的所有迁移文件检查,然后按顺序运行其余的。这意味着您可以回滚已经搞砸的迁移,并可以在不同的阶段查看数据库&#39;如果需要,移民。

在您的情况下,我们想要添加一个已发布的字段&#39;到我们的模型&#39; Book&#39;。我们将从终端运行:

rails g migration addPublishedToBook published:boolean

您可以从上面看到结构。如果我们想将名为firstname的字符串添加到我们的模型User:

rails g migration addFirstnameToUser firstname:string

从终端运行这些任务后,每个任务都会创建一个新的迁移文件。准备就绪后,运行rake db:migrate,新的更改将应用​​于您的数据库。

答案 2 :(得分:1)

只需要添加新的迁移文件即可对数据库进行更改。

rails g migration AddFieldToMyTable my_field:string

现在,你需要坚持改变:

bundle exec rake db:migrate

如果要将字段添加到表单中,请不要忘记在控制器接受的属性中添加新字段:

def model_params
  params.require(:model).permit(...., :my_field)
end

简单的解释是这个过程,我希望它对你有所帮助! (Google traductor爱:[)