Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Rails 4:将柱添加到现有脚手架_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby Rails 4:将柱添加到现有脚手架

Ruby Rails 4:将柱添加到现有脚手架,ruby,ruby-on-rails-4,Ruby,Ruby On Rails 4,是的,这个问题在这里被淹没了,但大多数都是几年前的问题,我使用的是Rails 4。我尝试了几次,结果把我的rails应用搞砸了,所以我不会再冒险了 我已经创建了一个带有字段的脚手架,并对其模型、控制器和视图进行了许多更改。想象一下,当你为某人工作几周后,在你创建了一个脚手架之后,他们意识到他们错过了一个重要的专栏——lol rails g scaffold Book a:string b:integer 如何轻松添加c:date 很少有例子显示运行迁移,也很少有人说编辑rails控制台。我对r

是的,这个问题在这里被淹没了,但大多数都是几年前的问题,我使用的是Rails 4。我尝试了几次,结果把我的rails应用搞砸了,所以我不会再冒险了

我已经创建了一个带有字段的脚手架,并对其模型、控制器和视图进行了许多更改。想象一下,当你为某人工作几周后,在你创建了一个脚手架之后,他们意识到他们错过了一个重要的专栏——lol

rails g scaffold Book a:string b:integer
如何轻松添加
c:date

很少有例子显示运行迁移,也很少有人说编辑rails控制台。我对rails g迁移是否将这个添加到那个c:data中感到困惑


由于我仍在学习RoR,非常感谢您提供的任何答案

要添加新列,应创建迁移:

rails g migration add_c_to_books c:date
class AddCDEToBooks < ActiveRecord::Migration
  def change
    add_column :books, :c, :date
    add_column :books, :d, :string
    add_column :books, :e, :integer
  end
end
class MyMigration < ActiveRecord::Migration
  def change
  end
end
(注意语法:add_x_to_y),这将把这个文件添加到db/migrate/timestamp_add_c_to_books.rb:

class AddCToBooks < ActiveRecord::Migration
  def change
    add_column :books, :c, :date
  end
end
就这样


您可以通过以下方式添加多个列:

rails g migration add_c_d_e_to_books c:date d:string e:integer
这将创建以下迁移:

rails g migration add_c_to_books c:date
class AddCDEToBooks < ActiveRecord::Migration
  def change
    add_column :books, :c, :date
    add_column :books, :d, :string
    add_column :books, :e, :integer
  end
end
class MyMigration < ActiveRecord::Migration
  def change
  end
end
这将导致清洁迁移:

rails g migration add_c_to_books c:date
class AddCDEToBooks < ActiveRecord::Migration
  def change
    add_column :books, :c, :date
    add_column :books, :d, :string
    add_column :books, :e, :integer
  end
end
class MyMigration < ActiveRecord::Migration
  def change
  end
end
classmymigration

您可以在
defchange

中自由指定指令,这是什么:>编辑rails控制台?创建一个新的迁移是一个好办法。@RustamA.Gasanov一个据说可以编辑rails控制台的网站。你能发布一个关于“创建新迁移”的答案吗?所以基本上我只需要修改视图就可以了?如果我需要对该列(c)执行计算,它是创建另一个模型还是相同的
book.rb
?@Sylar您需要修改要使用
c
的所有位置。如果要将其添加到表单:将其添加到视图,则可能需要保存它-修改控制器(将
c
添加到
def book_params.permit
),如果要验证它-将相应的代码添加到book model等。您不需要创建新的m/v/c文件,只需修改现有的文件即可。谢谢!有没有其他方法可以一次性添加更多列?ie:c,d,e?@Sylar你当然可以。例如,尝试
rails g migration将_c_d_e_添加到_booksc:date d:string e:integer
,并查看创建的文件。然后,您可以删除它并添加所需的迁移,因为您将了解它是如何工作的。@Sylar顺便说一句,在
rails g migration…
命令中指定列并不受限制。您可以随意命名它,例如
rails g migration my_awesome_migration
,它将使用empty
def change
方法创建新的迁移,并在其中添加您想要的任何代码。然后运行迁移以应用更改。