Рельсы находят хотя бы один «заказ» со статусом «выполнено» - PullRequest
1 голос
/ 07 апреля 2011

Не лучший вариант с Rails, так что это может быть очень просто.У меня есть база данных с таблицами Groups and Orders - groups has_many orders, orders belongs_to groups. Заказы имеют строковое поле с именем status, которое может быть in progress, canceled, completed.Заказ считается «не выполненным», если он отменен или выполнен.Я хотел бы иметь возможность найти все группы без выполнения заказов и по крайней мере один заказ завершен.Пока что у меня нет ни одного:

groups = Group.find(:all, :include => :orders, :conditions => ["orders.status != :in_progress", { :in_progress => Constant::IN_PROGRESS }])

Есть ли способ найти группы, по крайней мере, с одним выполненным заказом (без простой итерации по этому массиву и выбора их)?

Редактировать: Rails версия 2.1.0 Извините за недосмотр!

1 Ответ

0 голосов
/ 07 апреля 2011

Если вы поместите это в одно условие поиска, это будет действительно сложно, и вы, возможно, захотите добавить больше фильтров позже, так что, возможно, вы захотите разбить его на результаты поиска.

@groups = []
groups = Group.find(:all, :joins => :orders, :conditions =>])
no_orders_in_progress = Group.find(:all, :jois => 'order', :conditions => ['status!=', 'in progress'], :limit => 5)
orders_completed = Group.find(:all, :joins => 'order', :conditions => ['status=?', 'completed'], :limit => 1)
@groups << orders_completed + no_orders_in_progress

Убедитесь, что ограничениесколько хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...