У меня есть 3 соответствующие таблицы.
Пользователь, Заказы и Доступные для просмотра
Идея состоит в том, что у каждого пользователя есть много заказов, но в то же время каждый пользователь может просматривать конкретные другие заказы, принадлежащие другим пользователям. Таким образом, Viewables имеет атрибуты user_id
и order_id
.
Заказы имеют
:has_many :Users, :through => :viewables
Можно ли сделать поиск через вид Ордена?
Так что-то вроде
@ viewable_orders = Orders.find (: все,: условия => ["Viewable.user_id =?", 1])
Чтобы получить список заказов, которые можно просмотреть по user_id = 1. (Это не работает, иначе я не буду спрашивать. :()
Идея в том, что я могу сделать что-то вроде боковой панели, где текущий пользователь (вошедший в систему) может просматривать список заказов других людей, которые он может просматривать.
Например
Три других пользователя, у которых есть какие-то ордера, которые он может просматривать, должны в конечном итоге отображаться так:
- Джек (2)
- Базовый заказ (registry_id: 1)
- Новый заказ (registry_id: 29)
- Эми (4)
- Короткий заказ (registry_id: 12)
- Джилл (5)
- Заказ оборудования (14)
- Розовый Заказ (17)
- Заказ ПО (76)
(в скобках указаны соответствующие user_id или registry_id)
Таким образом, чтобы найти список всех заказов, которые может найти текущий пользователь (при условии, что user_id текущего пользователя равен 1), можно найти, выполнив
@viewable_orders = Viewable.find(:all, :conditions => ["user_id=?", 1])
И это дало бы мне коллекцию из вышеупомянутых 6 реестров. Теперь, самый простой способ сделать это, для меня это просто список
+ Jill's Hardware Order
+ Jill's Pink Order
+ Amy's Short Order
+ etc
Но это уродливо для длинных списков.
Спасибо!