имена динамических переменных с использованием Ruby's instance_variable_set - PullRequest
0 голосов
/ 21 октября 2010

Я пытаюсь создать набор экземпляров с разными именами экземпляров, используя 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 ]

4 голосов
/ 22 октября 2010

Переменные экземпляра могут быть неправильным инструментом для работы. Если вам нужно всего лишь создать трех пользователей, то:

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.

0 голосов
/ 21 октября 2010

Вы бы поместили строку, содержащую имя переменной экземпляра, которую вы хотите установить. В качестве альтернативы, если у вас нет такой строки, вы можете просто пропустить интерполяцию строк и записать туда имя переменной экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...