开发者

Rails: Getting column value from query

开发者 https://www.devze.com 2023-04-13 02:16 出处:网络
Seems like it should be able to look at a simple tutorial or find an aswer with a quick google, but I can\'t...

Seems like it should be able to look at a simple tutorial or find an aswer with a quick google, but I can't...

codes = PartnerCode.find_by_sql "SELECT * from partner_codes where product = 'SPANMEX' and isused = 'false' limit 1"

I want the column named code, I want just the value. Tried everything what that seems logical. Driving me nuts because everything I find shows an example without referencing the actual 开发者_运维问答values returned

So what is the object returned? Array, hash, ActiveRecord? Thanks in advance.


For Rails 4+ (and a bit earlier I think), use pluck:

Partner.where(conditions).pluck :code
> ["code1", "code2", "code3"]

map is inefficient as it will select all columns first and also won't be able to optimise the query.


You need this one

Partner.where( conditions ).map(&:code)

is shorthand for

Partner.where( conditions ).map{|p| p.code}

PS

if you are often run into such case you will like this gem valium by ernie

it gives you pretty way to get values without instantiating activerecord object like

Partner.where( conditions ).value_of :code

UPDATED:

if you need access some attribute and after that update record

save instance first in some variable:

instance=Partner.where( conditions ).first

then you may access attributes like instance.code and update some attribute

instance.update_attribute || instance.update_attributes

check documentation at api.rubyonrails.org for details

0

精彩评论

暂无评论...
验证码 换一张
取 消