Вы не можете динамически установить local variables
таким образом, потому что то, что вы на самом деле пытаетесь сделать, это установить String
. Ваш код интерпретируется следующим образом
"member1" = Fabricate(:user)
Который поднимет SyntaxError
для неожиданного =
, потому что вы не можете установить String
ни к чему.
Однако вы можете выполнить эту операцию с instance_variables
следующим образом:
4.times do |n|
instance_variable_set("@member#{n}", Fabricate(:user))
end
Затем к ним доступ с @member1
, @member2
и т.д.
Для того, чтобы ответить на ваш второй вопрос не send
и eval
не имеют особого использования в этом случае