Ruby on rails 在RubyonRails中向SQL表添加行

Ruby on rails 在RubyonRails中向SQL表添加行,ruby-on-rails,Ruby On Rails,如何在Rails中将数据添加到表中 到目前为止,我已经创建了一个Rails应用程序,可以从API中提取数据。接下来,我运行了命令 rails generate model order 我有/db/migrate/timestamp\u create\u orders.rb class CreateOrders < ActiveRecord::Migration def change create_table :orders do |t| t.string :ema

如何在Rails中将数据添加到表中

到目前为止,我已经创建了一个Rails应用程序,可以从API中提取数据。接下来,我运行了命令

rails generate model order
我有/db/migrate/timestamp\u create\u orders.rb

class CreateOrders < ActiveRecord::Migration
  def change
    create_table :orders do |t|
      t.string :email, null: false
      t.string :order_date, null: false
      t.string :total_price, null: false
      t.string :order_number, null: false
      t.string :cust_name, null: false
      t.string :zip_code, null: false

      t.timestamps null: false
    end
  end
end

但另一个建议似乎是不要这样做。虽然它们都很旧

但在迁移中不创建数据库条目,通常在迁移文件中创建模式或指定模式中的更改。您可以使用
种子
在数据库中创建种子数据


要通过rails在数据库中创建新数据,您可以使用
create
new
方法,但在使用
new
方法时,您需要
保存链接中其他帖子中提到的数据

在迁移中不创建数据库条目,通常在迁移文件中创建架构或在
架构中指定更改。您可以使用
种子
在数据库中创建种子数据


要通过rails在数据库中创建新数据,您可以使用
create
new
方法,但在使用
new
方法时,您需要
保存链接中其他帖子中提到的数据

创建或迁移新数据库表时,不会自动添加表
。您需要手动添加它们。填充新创建的数据库表的一种方法是使用位于应用程序
db
文件夹中的
seeds.rb
文件。您可以将gem添加到应用程序中,以创建假表属性元素。使用faker的示例:

(1..3).each do # it'll create  3 new order
   Order.create(email: Faker::Internet.email, order_date: Faker::Date.between(2.days.ago, Date.today))
end
然后在项目文件夹控制台中运行
rakedb:seed

如果在
order.rb
文件中有一些验证,则可以创建该
order
new
实例,然后按如下方式保存:

order = Order.new(....)

order.save(validate: false)

创建或迁移新数据库表时,不会自动添加表
。您需要手动添加它们。填充新创建的数据库表的一种方法是使用位于应用程序
db
文件夹中的
seeds.rb
文件。您可以将gem添加到应用程序中,以创建假表属性元素。使用faker的示例:

(1..3).each do # it'll create  3 new order
   Order.create(email: Faker::Internet.email, order_date: Faker::Date.between(2.days.ago, Date.today))
end
然后在项目文件夹控制台中运行
rakedb:seed

如果在
order.rb
文件中有一些验证,则可以创建该
order
new
实例,然后按如下方式保存:

order = Order.new(....)

order.save(validate: false)

你看过rails文档了吗。Model.create()将创建并保存记录。Model.new()将创建它,您必须执行var.save才能保存到db。谢谢。这就是最佳实践?我真的不明白为什么有些帖子说你不应该用这个。仅不将其用于种子数据?当应用程序正在使用时,您是否希望保存来自api的数据(这似乎是您的问题,其余部分已设置)?在数据库中植入默认数据与在应用程序使用时保存记录是两件不同的事情(至少对我来说)。我不会通过迁移将数据添加到数据库中。用于创建和修改表(数据库设置)。您的控制器、模型、api、种子等文件将根据您的位置/目标处理添加和删除数据。我阅读了上面的整个文档页面,它用示例进行了解释并给出了上下文。很抱歉,在您的评论中回答您的问题,我认为这是对的,他们说在迁移中不要使用create()方法,这是Rails处理数据库结构的方式,但在您的应用程序代码中是公平的。您看过Rails文档了吗。Model.create()将创建并保存记录。Model.new()将创建它,您必须执行var.save才能保存到db。谢谢。这就是最佳实践?我真的不明白为什么有些帖子说你不应该用这个。仅不将其用于种子数据?当应用程序正在使用时,您是否希望保存来自api的数据(这似乎是您的问题,其余部分已设置)?在数据库中植入默认数据与在应用程序使用时保存记录是两件不同的事情(至少对我来说)。我不会通过迁移将数据添加到数据库中。用于创建和修改表(数据库设置)。您的控制器、模型、api、种子等文件将根据您的位置/目标处理添加和删除数据。我阅读了上面的整个文档页面,它用示例进行了解释并给出了上下文。很抱歉,在你的评论中回答你的问题,我认为这是对的,他们说在迁移中不要使用create()方法,这是Rails处理数据库结构的方式,但在你的应用程序代码中是公平的。