我是Ruby on Rails的新手,我只想尝试为现有模型添加新属性。我必须向我的类添加一个新的布尔属性,该属性继承自:
ActiveRecord::Base
有人会一步一步解释如何做到这一点吗?
答案 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爱:[)