在Ruby on Rails中将行添加到SQL表

时间:2016-10-06 01:15:02

标签: ruby-on-rails

如何在Rails中向表中添加数据?

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

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

我有/db/migrate/timestamp_create_orders.rb

Order.create(:email=>'fake@fake.com',:order_data=>"... 

接下来,我相信我需要运行db:migrate,这将创建表。

我的问题是,如何向此表添加数据?我希望用户访问该应用程序,它会提取数据并将其存储在此表中。

我发现了相互矛盾的建议.. 我应该使用here

中的建议吗?
timer.Stop();
timer.Interval = new TimeSpan(0, 0, 0, 1);  // 1sec
timer.Start();

但是其他建议似乎说不要这样做herehere。虽然他们都很老了

2 个答案:

答案 0 :(得分:2)

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

要通过导轨在数据库中创建新数据,您可以使用createnew方法,但是当您使用时,需要save链接中其他帖子中提到的数据new方法。

答案 1 :(得分:1)

在创建或迁移新数据库表时,不会自动添加表row。您需要手动添加它们。填充新创建的数据库表的一种方法是使用位于应用程序seeds.rb文件夹中的db文件。您可以将Faker 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

然后在项目文件夹控制台中运行rake db:seed

如果您在order.rb文件中进行了一些验证,则可以创建new的{​​{1}}个实例,然后将其保存为:

order