2016-10-06 7 views
0

どのようにしてRailsのテーブルにデータを追加できますか?Ruby on RailsのSQLテーブルに行を追加する

これまでのところ、私はAPIからデータを取得するRailsアプリケーションを作成しました。移行およびそのテーブルを作成します。次に、私はコマンド

rails generate model order 

を走っていると私は

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している、私はデシベルを実行する必要が信じています。

私の質問は、このテーブルにデータを追加する方法です。私は、ユーザーがアプリを訪問し、データを引き出し、それをこのテーブルに保存したい。私は相反するアドバイスを発見した

... 私はちょうどhere

Order.create(:email=>'[email protected]',:order_data=>"... 

からアドバイスを使うべきしかし、他のアドバイスは、このherehereをしないと言っているようです。それらはすべてかなり古くなっていますが、

+1

は、レールのドキュメントで見たことがありますか? http://guides.rubyonrails.org/getting_started.html#saving-data-in-the-controller Model.create()はレコードを作成して保存します。 Model.new()はそれを作成し、dbに保存するにはvar.saveを実行する必要があります。 – user3366016

+0

ありがとうございます。これはベストプラクティスですか?私は、なぜあなたがこれを使ってはいけないと言っていたのか理解できませんでした。シードデータにのみ使用しないでください。 – Adam12344

+1

アプリが使用中にAPIからのデータを保存したいのですか(残りの設定はあなたの質問と思われる)?アプリケーションの使用中に既定のデータとレコードを保存してデータベースをシードすることは、少なくとも私にとっては2つの異なることです。私は移行を介してデータベースにデータを追加しません。テーブルの作成と変更(db setup)のためのものです。コントローラ、モデル、API、シードなどのファイルは、あなたの目的/目標に応じてデータの追加と削除を処理します。 IDは上記の文書ページ全体を読んで、例と説明し、文脈を示します。 – user3366016

答えて

1

新しいデータベーステーブルの作成または移行中に、テーブルrowは自動的に追加されません。手動で追加する必要があります。新しく作成されたデータベーステーブルを作成する1つの方法は、dbフォルダにあるseeds.rbファイルを使用しています。偽のテーブルの属性要素を作成するために、Faker gemをアプリケーションに追加できます。偽物を使用した例:

(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ファイル内のいくつかの検証を持っている場合は、あなたがそのordernewインスタンスを作成したいと、それを保存することができます:

order = Order.new(....) 

order.save(validate: false) 
2

移行では作成しません。通常、移行ファイルのschemaにスキーマを作成したり変更を指定したりします。データベースにシードデータを作成するにはseedsを使用します。

あなたは createまたは new方法のいずれかを使用することができ、レールを介してデータベースに新たなデータを作成するには、しかし、あなたは、あなたが newメソッドを使用しているときに、リンク内の他の記事で述べたようにデータを saveする必要があります。

関連する問題