1

Rails コンソールでは、私の Class User は次のようになります。

irb(main):005:0> User
=> User(id: integer, name: string, created_at: datetime, updated_at: datetime)

を使用して User のインスタンスを生成できます

irb(main):006:0> User.create(:name => "user0")

私がやりたいことは、User の X 個のインスタンスを作成して、データベースをテストすることです。ループを循環する Ruby スクリプトを作成することを考えました - (実際の Ruby コードではありません!)

for i in 1..X do
  User.create(:name => "name"+i)
end

しかし、Ruby でクラスにアクセスする方法と、コンソールに実際のオブジェクトを生成するように「指示」する方法がわかりません。

答えてくれてありがとう!

4

2 に答える 2

1

ここにはいくつかのオプションがあります。最良の選択肢は、Rails のデフォルトのTest::Unit、またはRSpec、またはその他の代替手段を使用して、単体テストを作成する方法を学ぶことです。これは正しい方法であり、実際、Rails にはデフォルトですべてのテストが組み込まれています。testディレクトリとrake test、その他のテスト タスクがあります。Rails ジェネレーター ( rails g model Foo) を使用すると、テスト ファイルも作成されます。それらに記入するだけです。

テスト フレームワークを学習する準備ができていない場合は、上記のコードをファイル ( と呼びましょうtest_user.rb) に入れて、 で実行できますrails runner。これにより、コードを実行する前に Rails 環境がブートストラップされ、モデルにアクセスできるようになります。

rails runner test_user.rb
于 2013-03-28T00:12:32.230 に答える
0

データベースのシード データを作成しようとしているようです。コードを Rails コンソールで直接実行してみませんか? または、Rake タスクを作成して、そこからシードを実行することもできます。

また、 Fakerを使用することをお勧めします。これにより、リアルなデータが得られます。

require 'faker'

for i in 1..X do
    u = User.new
    u.first_name = Faker::Name.first_name
    u.last_name = Faker::Name.last_name
    u.email = Faker::Internet.email
    u.notes = Faker::Lorem.paragraph
    u.cell_phone = Faker::PhoneNumber.cell_phone
    u.home_phone = Faker::PhoneNumber.phone_number
    u.save
end
于 2013-03-28T00:33:32.130 に答える