我是Ruby on Rails的初学者,并遵循以下文章: - http://guides.rubyonrails.org/migrations.html
如果我需要生成迁移和模型,我可以使用,例如: -
$ rails generate model Product name:string description:text
这将创建: -
class CreateProducts < ActiveRecord::Migration
def change
create_table :products do |t|
t.string :name
t.text :description
t.timestamps
end
end
end
然而,如果我有一个更大的模型(具有许多属性)。我不想将所有属性都放在“rails generate”命令中。我可以先对模型进行编码,然后从该模型文件生成迁移吗?
很抱歉问这么愚蠢的问题。我只是想了解。
答案 0 :(得分:2)
生成命令不是必须做的事情。它只是一个可以帮助您自动完成某项工作的脚本。运行generate命令后,您可以在控制台中看到此命令的作用。它看起来像这样:
rails generate scaffold User name:string email:string
invoke active_record
create
db/migrate/20100615004000_create_users.rb
create
app/models/user.rb
invoke
test_unit
create
test/unit/user_test.rb
create
test/fixtures/users.yml
route resources :users
invoke scaffold_controller
create
app/controllers/users_controller.rb
invoke
erb
create
app/views/users
create
app/views/users/index.html.erb
create
app/views/users/edit.html.erb
create
app/views/users/show.html.erb
create
app/views/users/new.html.erb
create
app/views/users/_form.html.erb
invoke
test_unit
create
test/functional/users_controller_test.rb
invoke
helper
create
app/helpers/users_helper.rb
invoke
test_unit
create
test/unit/helpers/users_helper_test.rb
invoke stylesheets
converted by Web2PDFConvert.com
create
public/stylesheets/scaffold.css
您可以实际创建/修改所有文件。但使用generate
的好处是它会自动调用所有必需的插件等来生成所有必需的文件。
这就是为什么即使对于非常复杂的模型,控制器等也建议使用generate命令。
因此,在您的情况下,我建议将建筑模型分成几个步骤。它可能是这样的:
rails generate model Product name:string description:text
rails generate migration AddPriceToProducts price:integer
rails generate migration AddDiscountToProducts discount:integer
and so on
如果您犯了一些错误并且它可以帮助您不受伤害,您可以回滚的每一步 你的数据库。
答案 1 :(得分:1)
您可以手动编写迁移代码。模型的属性直接从数据库中读取...因此,如果您将t.string :name
添加到迁移文件,然后运行rake db:migrate
,则该列将添加到表中,从而使其可用作属于你的模型。