2013-08-09 3 views
2

У меня есть две моделиприсоединяется условие на активной записи

Order has_many State(s) 
State belongs_to Order 
a State has an attribute named 'kind' 

Я пытаюсь выразить следующий запрос с активной записи: «все заказы, которые current_state.kind =: что-то»,

current_state - это последнее созданное состояние для заказа.

Я также добавить в модель: current_state как HAS_ONE ассоциации:

has_one :current_state, -> { order('created_at DESC').limit(1) }, class_name: 'State' 

, но это не помогает

+0

Какая ошибка возникает из-за этого решения? –

+0

У меня нет ошибок, но я не могу выразить запрос на все Заказы, где «current_order.kind» - «что-то» – Luka

+0

«Order.joins (: states) .where (states: {kind: 'something' }) 'должен делать трюк;) (я не знаю, почему @MarekLipka удалил его ответ, хотя ...) – MrYoshiji

ответ

0

это лучшее решение, которое я нашел до сих пор

Order.joins(:states).where("states.id IN (SELECT MAX(id) FROM states GROUP BY order_id)").where("states.kind"=>"checkedin")