如何解决您可以使用变量来引用Rails中的表列吗?
| 假设我有一个要转换的表。它的列名称为Item1,Item2 ... Item25。我对列名没有控制权,我正在将其转换为更好的结构。 因为有一个命名约定的模式,所以我可以即时创建列名。问题是,当我尝试将变量用作对象键时,它会作为文字而不是变量的内容通过。 例如,这有效:if !order.item1.empty?
OrderItem.create(
:item => order.item1,:quantity => order.qty1,:price => order.price1
)
但是,我不想手工制作25个变体,而是想做类似的事情
i = 1
while i < 25
item_ref = \"item\" + i.to_s
if !order.item_ref.empty?
OrderItem.create(
:item => order.item_ref,etc...)
i += 1
end
end
但是,这当然是行不通的。 Rails尝试查找order.item_ref而不是不存在的order.item1。
我在各种项目上都遇到过几次这个问题,有什么想法吗?
解决方法
order.send item_ref
;另外,请使用25.times do |i|
(从0开始)或(1..25).each do |i|
,而不是您自己的循环。
,我真的不鼓励您使用这种设计,但无论如何..您可以使用send()
方法进行尝试。如order.send(\"item + i.to_s\")
...
,尝试这个
在我的情况下有效
i = 1
while i < 25
item_ref = \"item\" + i.to_s
unless order[item_ref].empty?
OrderItem.create :item => order.item_ref,:blah blah ...
i += 1
end
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。