2011-10-12 26 views
0

獲取列值似乎應該能夠看一個簡單的教程或找到一個快速谷歌的aswer,但我不能......Rails的:從查詢

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

我想列命名代碼,我只想要價值。嘗試了一切似乎合乎邏輯的事情。驅使我瘋了,因爲我發現的一切都顯示了一個沒有參考返回的實際值的例子

那麼返回的對象是什麼?數組,散列,ActiveRecord?提前致謝。

回答

0

需要使用此

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

PS

一個

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

簡寫如果你是經常碰到這樣的情況下,你會喜歡這種寶石valium by ernie

它給你很好的方式來獲取值,而不需要實例化activerecord對象

Partner.where(conditions).value_of :code 

更新:

,如果你需要訪問一些屬性和更新記錄

保存例如首先在某些變量之後:

instance=Partner.where(conditions).first 

,那麼你可以訪問像instance.code屬性和更新一些屬性

01在

檢查文檔細節

+0

好吧,更近......我沒有得到超過1個結果,因爲我無法在條件中設置限制。 –

+0

所以Partner.where(條件).first.code相當有效 – sarvavijJana

+0

工作!好吧,讓事情更復雜一點......我需要更新相同的記錄......沒有id或ActiveRecord對象,是否需要再次查詢? –

2

對於Rails開發4+(和更早一點,我認爲),使用pluck

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

地圖是低效的,因爲它會首先也是選擇所有列將無法優化查詢。