я следующая таблица называется lead_states
Выберите строки, совпадающих с ИНЕК, где нет более новых строк, разделяющих конкретного значение столбца Колонки существуют
Он имеет следующие столбцы: id
, lead_id
, state
, note
, created_at
state
- это строка из перечислимого списка, например new
, opened
, sold
или lost
.
Всякий раз, когда свинец меняет состояние, добавляется новая строка состояния.
Я ищу для поиска потенциальных клиентов в определенном состоянии. Текущее состояние свинца - это новейшее lead_state для этого лидерства.
Так что я в основном смотрит в конечном итоге с областью, как:
Lead.in_state('opened')
Я попытался следующую реализацию этой сферы:
def in_state(state)
lead_state_scope = LeadState.where(state: state)
Lead.where(id: lead_state_scope.select(:lead_id))
end
Однако, это будет возвращать все провода, которые в какой-то момент их жизненный цикл находится в состоянии, о котором идет речь.
Спасибо, но Postgres задыхается в результате запроса. SELECT "lead_states" "lead_id" FROM "lead_states", где "lead_states" "состояние" = 'открыто' GROUP BY "lead_states" "lead_id" HAVING created_at = MAX (created_at) ActiveRecord :: StatementInvalid:... PG :: GroupingError: ERROR: столбец «lead_states.created_at» должен появиться в предложении GROUP BY или использоваться в агрегированной функции –
. Попробуйте добавить '.select (: lead_id,: created_at)' между предложением where и предложением группы, см., если это решает проблему. – Jaxx
Ага, да, это определенно похоже на специфику Postgres в зависимости от вашей версии https://github.com/rails/rails/issues/1515. Мой ответ может быть полезен для других, но мне нужно подумать о том, что можно сделать для вашей ситуации. – SamJo