0

次の列を持つテーブルがあるとします。

class CreatePosts < ActiveRecord::Migration
  def change
    drop_table :posts

    create_table :posts do |t|
      t.string :First_Name
      t.string :Last_Name
      t.string :Company

      t.timestamps
    end
  end
end

私はフェイカー、Randexp、偽造などの宝石を調べてきました。しかし、データはどのように正確にデータベースにインポートされるのでしょうか。これまでのところ、フォームを介してデータベースに入力されるものだけを扱ってきました。

私はそれがコントローラーを介して行われると仮定しています:

def create
  @post = Post.new(post_params)

  @post.save
  redirect_to @post
  end

しかし、正確にはわかりませんが、これをガイドする例やヒントはありますか? ありがとう

4

2 に答える 2

2

これがアプリケーションのブートストラップに必要なものである場合は、seedsファイルまたはrake taskほとんど同じものを使用できます。

Faker を使用する唯一の理由は、テストのためにデータベースにデータを入力したい場合だけですが、それは本当ですか? はいの場合、アプローチは少し異なる可能性があります。

  1. シード ファイルの使用:

ファイルを開きdb/seeds.rb、アクティブなレコード メソッドを使用してデータの入力を開始します。

Post.create!(First_Name: 'Name', Last_Name: 'Last', Company: 'Company Name')

期待されるコードを記述したら、実行rake db:seedしてデータベースにデータを入力します。

于 2013-09-26T21:05:10.063 に答える
0

それは本当にあなたがしようとしていることに依存します:

テスト用にデータベースにデータを入力するだけの場合は、シードを使用できます。

または、これを行うための rake タスクを作成することもできます。

Railsで開発データベースを埋める最良の方法

または、「ffaker」gem などを使用して、コンソールから呼び出すことができるデータを作成するモデルを作成します...

class RandomPost
  attr_reader :first_name, :last_name, :company

  def initialize options = {}
    @first_name = options[:first_name] ||= Faker::Name.first_name
    @last_name = options[:last_name] ||= Faker::Name.last_name
    @company = options[:company] ||= Faker::Company.name
  end

  def save
    Post.create({first_name: @first_name, last_name: @last_name, company: @company})
  end

end

次に、コンソールで複数のランダムな投稿を作成する必要がある場合は...

10.times do
  post = RandomPost.new
  post.save
end
于 2013-09-26T21:15:33.020 に答える