我想做类似的事情:
4.times do |n|
"member#{n}" = Fabricate(:user)
end
调用member1
,member2
等..会给我用户实例。 #send或#eval对我的情况有用吗?谢谢你的期待。
答案 0 :(得分:2)
您无法以这种方式动态设置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
在这种情况下没有特别用处