Ruby に変換しようとしている LINQ クエリを含む C# コードがあり、DB ORM として Sequel を使用しています。linq クエリはいくつかの結合を実行するだけで、結合されたエンティティへの参照を含む匿名オブジェクトを返します。コードを変換して正しく動作させましたが、各テーブルからすべての列を返すだけで、C# コードで行われるのと同様に、列の各セットを独自のオブジェクトにまとめたいと思います。
LINQ クエリ
from s in slots
join tu in _dbContext.table_usages on s.id equals tu.slot_id
join r in _dbContext.Reservations on tu.reservation_id equals r.ReservationID
join o in _dbContext.orders on r.OrderID equals o.OrderID
join c in _dbContext.Contacts on r.ContactID equals c.ContactID
where tu.reservation_id != null &&
r.state != ReservationStates.Cancelled
select new { SlotId = s.id, Reservation = r, Order = o, Contact = c, TableUsage = tu };
ルビーコード:
select(:slots__id, :reservations.*, :orders.*, :restaurant_customers.*, :table_usages.*)
.filter(slots__restaurant_id: restaurant_id, slots__removed: false)
.filter(slots__slot_time: start_time..end_time)
.join(:table_usages, slot_id: :id)
.join(:reservations, id: :table_usages__reservation_id)
.join(:orders, id: :reservations__order_id)
.join(:restaurant_customers, id: :reservations__contact_id)
.filter('table_usages.reservation_id is not null')
.filter('reservations.state != ?', ReservationStates.cancelled)
ドキュメントを介してこれを達成する方法を見つけることができませんが、私がまだ考えていない方法で誰かが同様のことをしたかどうかを確認すると思いました.
ありがとう!