द्वारा उप-संग्रह में परिणाम देता है मैं रेल 3.1 में एक ActiveRecord क्वेरी करने का प्रयास कर रहा हूं, जहां मैं परिणामों को समूहबद्ध वस्तुओं के उप-संग्रह में सॉर्ट करता हूं, इस मामले में समूह द्वारा तिथिबद्ध।रेल सक्रिय एक्टिव रिकॉर्ड समूह
मुझे लगता है कि मेरा कोड इसे सर्वोत्तम समझा सकता है। यह मेरी विधि है, जो काम करती है लेकिन नौकरी पाने के लिए 4 प्रश्न जारी करती है। यह इस तरह से करने के लिए बहुत प्रभावी प्रतीत नहीं होता है।
def entry_days
days = @user.entry_groups.find(
:all,
:select => 'date',
:limit => 3,
:group => 'date').map(&:date)
entry_days = days.map do |date|
{ :date => date,
:entry_groups => @user.entry_groups.find_all_by_date(date)
}
end
end
group_by उपयोग करने के लिए नीचे दिए गए डेव न्यूटन से सुझाव का उपयोग करना, मैं विधि इस तरह फिर से लिखा है:
def entry_days
dates_with_entries = @user.entry_groups.find(
:all,
:select => 'date',
:limit => 3,
:group => 'date').map(&:date)
@user.entry_groups.where(:date => dates_with_entries).all.group_by(&:date).
map do |date, entry_groups|
{ :date => date,
:entry_groups => entry_groups }
end
end
कम से कम मैं इसे नीचे केवल 2 प्रश्नों का अब है।
तब मैं फिर से पुनः लिखा विधि इस तरह:
dates_with_entries = user.entry_groups.all(
:select => 'date',
:limit => num_days,
:order => 'date DESC',
:group => 'date').map(&:date)
entry_groups = user.entry_groups.
where(
:date => dates_with_entries
).
all(:order => 'date DESC')
entry_days = entry_days.group_by(&:date).
map { |date, entry_groups|
{
:date => date,
:entry_groups => entry_groups
}
}
एक तरफ ध्यान दें पर: मैं इतने सारे तरीकों को एक साथ चेनिंग नहीं होना चाहिए, और नेस्टेड तरीकों और हैश के लिए पसंदीदा खरोज प्रारूप क्या है?
यह प्रश्न: http://stackoverflow.com/questions/6953512/rails-3-1-with-postgresql-group-by-must-be-used-in-an-aggregate-function/6953704#6953704, कुछ समान – rubish