可以說我有一個模型,Foo
,它很大,並且有很多組件。對於給定的Ajax查詢,我只對一個特定的屬性bar
感興趣,它是foos表中的一列。導軌:只加載一個屬性不是一個整體模型
是否有一種簡單的方法可以加載該屬性,而不用打擾檢索記錄的其餘部分?例如,如果我想知道的是Foo ID爲#_ _的酒吧,我該如何檢索?
可以說我有一個模型,Foo
,它很大,並且有很多組件。對於給定的Ajax查詢,我只對一個特定的屬性bar
感興趣,它是foos表中的一列。導軌:只加載一個屬性不是一個整體模型
是否有一種簡單的方法可以加載該屬性,而不用打擾檢索記錄的其餘部分?例如,如果我想知道的是Foo ID爲#_ _的酒吧,我該如何檢索?
可以通過調用select
方法僅返回特定的列用包含attribut的字符串你想要返回。對於你的例子:
Foo.select('bar').first #<Foo bar: 1>
請記住,這些物體會像正常的ActiveRecord對象但對你沒有選擇任何現場返回nil
,因此使用這個功能照顧。
您可以撥打選擇在類名本身或任何關係,所以你可以連續使用ActiveRecord的要求你平時使用像where
等
Foo.where(<condition>).select('fieldname')
例
results = Foo.where('is_active = ?', true).select('bar')
訪問選定的字段爲:
results.map {|res| res.bar}
返回的陣列條的
pluck(*column_names)
DOC:http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-pluck
例如Foo.pluck(:bar)
我喜歡這個
User.where(:id => user_id).pluck(:user_name).first #'tom'
Foo.where(:age => 23).pluck(:user_name) #['tom', 'jerry', ...]
非常困難的解決方案,嘗試這一個 - User.where(:ID => USER_ID).pluck(:USER_NAME)。一 – 2014-01-21 23:56:42