微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

您可以使用变量来引用Rails中的表列吗?

如何解决您可以使用变量来引用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 举报,一经查实,本站将立刻删除。