2010-04-24 3 views
1

получать сообщение об ошибке:ROR Heroku Postgres вопрос

ActiveRecord::StatementInvalid (PGError: ERROR: argument of HAVING must be type boolean, not type timestamp without time zone 

код контроллера сниппет:

def inactive 
    @number_days = params[:days].to_i || 90 
    @clients = Client.find(:all, 
     :include => :appointments, 
     :conditions => ["clients.user_id = ? AND appointments.start_time <= ?", current_user.id, @number_days.days.ago], 
     :group => 'client_id', 
     :having => 'MAX(appointments.start_time)' 
    ) 
    end 

изменил
:having => 'MAX(appointments.start_time)'
в
:having => ['MAX(appointments.start_time) <= ?', @number_days.days.ago]
и теперь ошибка:
ActiveRecord::StatementInvalid (PGError: ERROR: column "clients.id" must appear in the GROUP BY clause or be used in an aggregate function

+0

Я предлагаю вам подучить WHERE в SQL, HAVING и GROUP BY пунктов. http://www.w3schools.com/sql/sql_having.asp. Это не проблема с Rails. – JRL

+0

да, его определенно постгр более строгий, чем sqlite вещь, просто пытается найти решение .... все еще учится – sysconfig

ответ

4

В предложении :having требуется фрагмент SQL, который вычисляет значение boolean. MAX(appointments.start_time) вычисляет временную метку

0

изменения: группы => 'client_id': группа => 'table_name.client_id'

Смежные вопросы