Я пытаюсь восстановить таблицу из следующих действий таблице:Рельсы и PostgresSQL проблема с Имея
столбцов: ID, имя, статус, PRODUCT_ID, User_ID и ряд других, не соответствующие колонки для этой проблемы.
Каждый раз, когда пользователь хочет получить продукт, я создаю запись следующим образом: Name = Want, Status = True, Product_ID = идентификатор продукта, а User_ID - это идентификатор пользователя.
Затем каждый раз, когда пользователь не создает продукт, я создаю запись следующим образом: Name = Want, Status = False, Product_ID = идентификатор продукта, а User_ID - это идентификатор пользователя.
Я сделал это, потому что у меня есть другое имя действия в моем столе.
Теперь я хотел бы получить весь необходимый продукт, поэтому я должен получить все последние действия, сгруппированные по product_id для определенного пользователя, упорядоченного по убыванию created_at, а затем получить только действие, в котором status = true.
Так, чтобы получить все последние хотите действий, сгруппированных по product_id для Пользователя я сделал, что:
Action.select("DISTINCT ON (product_id) product_id,created_at, status, * ").where{(user_id == id) & (name == 'want')}.group("product_id, id, status").order(' product_id,created_at DESC')
Это получить последние действия для каждого продукта и пользователя, но получить как истинные и ложные статусы Единственная проблема что я не знаю, как отфильтровать эту таблицу, чтобы получить действие только в том случае, если это правда.
Я попытался сделать это следующим образом:
Action.select("DISTINCT ON (product_id) product_id,created_at, status, * ").where{(user_id == id) & (name == 'want')}.group("product_id, id, status").having("status = 'true'").order(' product_id,created_at DESC')
Но это дало бы мне последние действия, где требуется = истина. Если последним действием является статус = false, он будет извлекать тот, который был до этого, когда status = true.
Я действительно надеюсь, что это достаточно ясно,
Спасибо за вашу помощь
Вот идея о том, что я хочу, но я понятия не имею, как добиться того, что с рельсов: http://sqlfiddle.com/#!9/e4117/3
Если я что, что даст мне все состояние верно, но если у меня есть что: последний пункт является статус ложным и Рассматриваемый последнее верно, это даст мне элемент до последнего. Я хочу, чтобы он ничего не возвращал, если это не последний элемент. Спасибо, –
отредактировал мой ответ – lassej
Спасибо только одному вопросу: ORDER BY product_id, created_at DESC) ", user_id]). order (" product_id ") должен user_id быть id? Спасибо, –