I want to do something like:
4.times do |n|
"member#{n}" = Fabricate(:user)
end
Calling member1, member2 etc.. would give me user instances. Is #send or #eval useful to my situation? Thanks for looking.
You cannot dynamically set local variables in this manner because what you are actually trying to do is set a String. Your code is interpreted as follows
"member1" = Fabricate(:user)
Which will raise a SyntaxError for unexpected = because you cannot set a String to anything.
You can however perform this operation with instance_variables like so:
4.times do |n|
instance_variable_set("@member#{n}", Fabricate(:user))
end
Then access them with @member1,@member2, etc.
To answer your second question is no send and eval have no particular use in this case