【发布时间】:2016-10-06 01:15:02
【问题描述】:
如何在 Rails 中向表中添加数据?
到目前为止,我已经创建了一个从 API 提取数据的 Rails 应用程序。接下来,我已经运行了命令
rails generate model order
我有 /db/migrate/timestamp_create_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
接下来,我认为我需要运行 db:migrate 来创建表。
我的问题是,如何将数据添加到此表中?我希望用户访问该应用程序,它会提取数据并将其存储在此表中。
我发现了相互矛盾的建议.. 我应该使用here的建议吗?
Order.create(:email=>'fake@fake.com',:order_data=>"...
【问题讨论】:
-
看过 Rails 文档了吗? guides.rubyonrails.org/…。 Model.create() 将创建并保存记录。 Model.new() 将创建它,您必须执行 var.save 才能保存到数据库。
-
谢谢。所以这是最佳实践?我真的不明白为什么有些帖子说你不应该使用它。只是不将其用于种子数据?
-
您是否要在应用程序正在使用时保存来自 api 的数据(这似乎是您的问题,其余部分已设置)?使用默认数据播种数据库与在使用应用程序时保存记录是两件不同的事情(至少对我而言)。我不会通过迁移将数据添加到数据库。它用于创建和修改表(数据库设置)。您的控制器、模型、api、种子等文件将根据您的目的/目标处理添加和删除数据。我阅读了上面的整个文档页面,它通过示例进行了解释并给出了上下文。
-
对不起,在你的评论中回答你的问题,我认为这是正确的,他们说不要在迁移中使用 create() 方法,这是 Rails 操纵数据库结构的方式,但它是公平的在您的应用代码中。
标签: ruby-on-rails