ActiveRecord новичок здесь, разочарованный тем, что похоже на простой SQL-запрос не может легко превратиться в ActiveRecord (возможно, из-за моего отсутствия опыта).ActiveRecord простая максимальная дата от нуля до многих отношений
У меня есть следующий SQL, который работает:
select j.id, j.title, jac.latest from jobs j
left join (select job_id, max(created_at) latest from job_activity_logs group by job_id) jac
on j.id = jac.job_id
where j.state = 0
... что я хочу, чтобы включить в запрос ActiveRecord.
В моей модели Rails Я соотношение определяется:
class Job < ActiveRecord::Base
has_many :job_activity_logs
и
class JobActivityLog < ActiveRecord::Base
belongs_to :job
Другие решения используют ActiveRecord :: Base.connection.execute, что я не хочу использовать, потому что Мне нужно создать запрос на основе параметров querystring (уродливые строки concat и SQL-инъекции).
Как достичь такого же, как мой SQL в ActiveRecord?
Пожалуйста, ознакомьтесь с этим вопросом http://stackoverflow.com/questions/8567175/correct-way-to-find-max-value-with-association-rails – tegon
К сожалению, не @tegon, потому что мне нужны детали последняя запись в списке выбора –
Итак, почему вы не можете выполнить 'Job.first.job_activity_logs', так как вы объявили об ассоциации? Это даст все журналы активности для этой работы. Затем, чтобы выбрать конкретный атрибут, вам нужно сделать что-то. Было бы необходимо создать запрос, если вы действительно не знаете, какой результат должен быть .. но я думаю, что это запрос, который вы ищете в AR. 'Job.select (: id,: title,: latest) .where (state: 0) .first.job_activity_logs.group_by (&: job_id)' – Vlad