2014-07-16 2 views
0

을 할 때 나는 내 DB에 다음과 같은 테이블이 있습니다변환 문자열 액티브 DB를 쿼리

class CreateGoogleRecords < ActiveRecord::Migration 
def change 
    create_table :google_records do |t| 
    t.string :user_id 
    t.string :date 
    t.text :stats 
    t.string :account_name 
    t.integer :total_conversions 
    t.decimal :total_cost 

    t.timestamps 
    end 
end 
end 

내가보기 안에 테이블을 만들 찾고 있어요이 함께 그룹을 월별로 기록 (나는 할 수 없습니다 API를 사용하여 일괄 적으로 스크래핑되기 때문에 생성 된 날짜 사용).

레거시 코드가 많이 포함되어 있으므로 열을 datetime으로 변환하는 대신 날짜 문자열을 datetime 개체로 변환 할 수 있어야합니다. 쿼리를 수행합니다.

나는 writin을 시도했습니다. g 범위 :

scope :stats_for_reports, ->(start_date, end_date, user_ids) { select('user_id, sum(total_cost) as total_cost, sum(total_conversions) as total_conversions') 
                   .where('date >= ? and date <= ?', start_date, end_date) 
                   .where(user_id: user_ids) 
                   .group(DateTime.parse(:date).month.to_s)} 

그러나 나는 TypeError: can't convert Symbol into String 오류가 나타납니다.

GoogleRecord.where(date: date_start..date_end).group{ |m| DateTime.parse(m.date).month } 

또는

GoogleRecord.where(date: date_start..date_end).group(:date).to_date 

나는 이들의 가진 궤도에 오전 : 내가 좋아하는 일을 시도했던 콘솔에서

?

답변