0

instance_variable_setを使用してインスタンス名を変更することで、異なるインスタンス名を持つインスタンスのセットを作成しようとしていますが、動作させることができないようです。

 for i in 0..3 do
   username_str   = String.new
   username_str   = 'user_' + i.to_s

   username_new   = User.new
   username_new.instance_variable_set("@#{WHAT_DO_I_PUT_HERE?}", username_str)

   username_new = User.create(:username => username_str)

 end

理解できない部分は、「WHAT_DO_I_PUT_HERE?」があるinstance_variable_setの最初のフィールドに何を入力するかです。

4

2 に答える 2

4

インスタンス変数は、ジョブにとって間違ったツールである可能性があります。3人のユーザーを作成するだけの場合は、次のようにします。

3.times do |i|
  User.create(:username => "user_#{i}")
end

後で使用するためにUserオブジェクトを保持する必要がある場合は、配列を使用できます。

@users = 3.times.map do |i|
  User.create(:username => "user_#{i}")
end

その後、Userの最初のインスタンス、2番目のインスタンス、&c@users[0]を取得します。@users[1]

于 2010-10-21T22:37:23.317 に答える
0

設定するインスタンス変数の名前を含む文字列を入力します。または、そのような文字列がない場合は、文字列の補間をスキップして、インスタンス変数の名前を自分で書き込むことができます。

于 2010-10-21T19:11:43.920 に答える