如何根据用户输入选择特定属性?
例如,假设我有以下Object表,其中包含属性'name','shape','color'。我正在尝试根据用户输入选择属性。例如,如果用户输入“1”,则应返回第一个属性“name”的值。
有没有办法在不使用if语句对所有选项进行硬编码的情况下执行此操作?我的对象有28个属性,因此所有这些if语句似乎都过多。
if userInput == '1'
return @object.name
end
答案 0 :(得分:1)
我必须认为这不是实现目标的好方法,而是回答你提出的问题:
return @object.send @object.attribute_names[userInput.to_i]
或者也许:
@object.send %w{fieldname anotherfield yetanotherfieldname}[userInput.to_i]
或者也许:
@object.attributes.values[userInput.to_i]