Я бы сделал что-то вроде этого:
field = InquiryField.find_by!(name: 'company_name')
response_table = InquiryFieldResponse.arel_table
responses = field.inquiry_field_responses.where(response_table[:value].matches('aaa%'))
processes = InquiryProcess.where(id: responses.select(:inquiry_process_id))
Сначала выберите поле, для которого вы хотите проверить значения. Оттуда выберите все ответы, которые принадлежат этому конкретному полю, и начните с 'aaa'
. Затем выберите процессы, используя ответы.
Проблема с вашим текущим кодом заключается в том, что вы будете делать:
'some string' == start_with?('aaa')
Что должно быть:
'some string'.start_with?('aaa')
Или более конкретно для вашего случая:
end.last&.value&.start_with?('aaa')