2010-11-22 2 views
0

У меня есть модель следующегоПолучение упорядоченного хеша

class Quote < ActiveRecord::Base 

    named_scope :from_affiliate_id, Proc.new { |id| 
    { :select => "COUNT(*) as count_all, date(created_at) as date_created_at", 
     :conditions => {:affiliate_id => id}, 
     :group => "date(created_at)", 

    } 
    } 
    named_scope :in_dates, Proc.new {|from,to|{ :conditions => ["date(created_at) >= ? and date(created_at) <= ?",from,to]}} 

    belongs_to :affiliate 

    def self.create_quote(value = '') 
    return if value.nil? 
    quote = self.new(:affiliate_id => value) 
    quote.save 
    end 

end 

Когда я Quote.from_affiliate_id (1), я получаю следующий результат

[#<Quote >, #<Quote >, #<Quote >, #<Quote >] 

Я хочу получить упорядоченный Hash вместо , Который должен иметь дату как ключ и считать значением. Пожалуйста, помогите мне с этим. Поблагодарив в ожидании

ответ

1
Quote.from_affiliate_id(1).inject({}) do |h,q| 
    h[q.created_at] = q.count_all 
    h 
end 
+0

спасибо много shingara, что на самом деле помог – usmanali

1

Попробуйте

ActiveSupport::OrderedHash[*Quote.from_affiliate_id(1).map {|q| 
    [q.created_at, q.count_all] 
}.flatten] 

Создание нормального хэша не будет заказано:

>> ActiveSupport::OrderedHash[4,3,2,1].to_a 
=> [[4, 3], [2, 1]] 

против

>> Hash[4,3,2,1].to_a 
=> [[2, 1], [4, 3]] 
Смежные вопросы