似乎它应该能够查看一个简单的教程或找到一个快速谷歌的aswer,但我不能......
codes = PartnerCode.find_by_sql "SELECT * from partner_codes where product = 'SPANMEX' and isused = 'false' limit 1"
我希望列名为code,我只想要值。尝试了一切似乎合乎逻辑的东西。让我疯了,因为我找到的所有内容都显示了一个示例而没有引用返回的实际值
那么返回的对象是什么?数组,哈希,ActiveRecord?提前谢谢。
答案 0 :(得分:2)
对于Rails 4+(我认为有点早),请使用pluck
:
Partner.where(conditions).pluck :code
> ["code1", "code2", "code3"]
地图效率低下,因为它会先选择所有列,也无法优化查询。
答案 1 :(得分:0)
你需要这个
Partner.where( conditions ).map(&:code)
是
的简写Partner.where( conditions ).map{|p| p.code}
PS
如果你经常遇到这种情况,你会喜欢这个宝石valium by ernie
它为您提供了很好的方法来获取值而无需实例化像
这样的activerecord对象Partner.where( conditions ).value_of :code
更新:
如果您需要访问某个属性并在该更新记录之后
首先在某个变量中保存实例:
instance=Partner.where( conditions ).first
然后您可以访问instance.code
等属性并更新某些属性
instance.update_attribute || instance.update_attributes
在api.rubyonrails.org查看文档了解详情