我想做
current_user.field = User::????????
?
??????????
将是我想要的任何内容
这就是我要做的事情
Given /^"([^\"]*)" is a(?:|n) "([^\"]*)"$/ do |arg1, arg2|
cur_user = User.find(:first, :conditions => ['name = ?', arg1])
cur_user.update_attributes(:role => User::arg2.constantize)
end
虽然constantize不能用于此用途,但我知道它可以在Object.var.constantize上下文中工作
答案 0 :(得分:1)
你想解决的问题是什么?以这种方式使用常量是一种代码气味,如果你有一组Enumeration值或者要配置的东西,你应该使用类似ActiveHash的东西。
如果您确实需要以这种方式解决问题,请查看const_defined?()和const_get()。 const_get()将允许您对符号/字符串常量名称执行动态值调用,而不对其进行常量化。
答案 1 :(得分:0)
使用
????????.constantize
你可以做任何事情
答案 2 :(得分:0)
使用:
"User::#{arg2}".constantize
或
User.const_get(arg2)