Хорошо, мне удалось переоборудовать его, чтобы он был более дружественным к модификатору условий, и я думаю, что он правильно выполняет запрос sql. policy.status_change.last.status) ему присвоено то же состояние, которое использовалось в запросе - что неверно
вот моя обновленная строка условия ..
status_search = "status_changes.created_at between ? and ? and status_changes.status_id = ?) or
(status_changes.created_at = (SELECT MAX(sc2.created_at) FROM status_changes sc2
WHERE sc2.policy_id = policies.id and sc2.created_at < ?) and status_changes.status_id = ?"
Есть ли что-то очевидное для этого, что не возвращаются все оставшиеся связанные изменения статуса, когда он находит то, что в запросе?
вот обновленная находка ..
Policy.find(:all,:include=>[{:client=>[:agent,:source_id,:source_code]},:status_changes],
:conditions=>[status_search,status_date_start,status_date_end,search[:status_id].to_s,status_date_start,search[:status_id].to_s])