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

我无法弄清楚的部分是我在 instance_variable_set 的第一个字段中放了什么“WHAT_DO_I_PUT_HERE?”?

4

2 回答 2

4

实例变量可能是该工作的错误工具。如果您只想创建三个用户,那么:

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

如果您需要保留 User 对象以供以后使用,则可以使用数组:

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

之后@users[0]将检索用户的第一个实例,@users[1]第二个,&c。

于 2010-10-21T22:37:23.317 回答
0

您将放置一个包含要设置的实例变量名称的字符串。或者,如果您没有这样的字符串,您可以跳过字符串插值并自己在其中写入实例变量的名称。

于 2010-10-21T19:11:43.920 回答