使用Ruby的instance_variable_set的动态变量名

时间:2010-10-21 19:00:26

标签: ruby dynamic instance-variables

我正在尝试创建一组具有不同实例名称的实例,使用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?”?

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

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