Much appreciated. Thanks! On Monday, June 12, 2017 at 10:02:16 AM UTC-4, Jeremy Evans wrote: > > On Sunday, June 11, 2017 at 9:04:14 PM UTC-7, Greg Gilbert wrote: >> >> There have been a few posts over the years about this, but I was >> wondering what the latest and greatest approach is. >> >> Suppose you have Orders and Products, and a purchase is done in a join >> table called :orders_products. The join table has another field, >> 'quantity', indicating how many of the Products were in the Order. How >> would you store, and also query and return the value of, :quantity? >> >> class Order < Sequel::Model >> many_to_many :products, through: :order_product >> end >> >> class Product < Sequel::Model >> many_to_many :orders, through: :order_product >> end >> >> class OrderProduct < Sequel::Model(:orders_products) >> many_to_one :order >> many_to_one :product >> Integer :quantity >> end >> >> I believe this is correct so far. Here are my questions: >> >> >> 1. Rather than using order.add_product, you'd do something like >> OrderProduct.new(order: >> order, product: product, quantity: 23). Is that still the best way to >> do this, or is there a better way? >> >> Using OrderProduct.new would be a better way. > > >> >> 1. When getting order.products, how would you also get the quantity? >> >> Use the :select=>[Sequel[:products].*, > Sequel[:orders_products][:quantity]] association option > > >> >> 1. How would you update the value of quantity in the join table for >> an Order that already exists? >> >> DB[:orders_products].where(:order_id=>order_id, > :product_id=>product_id).update(:quantity=>quantity) > > >> >> 1. I saw references to the dataset_associations plugin and some >> others. How would those work here? >> >> As they usually do, I don't think there's anything special related to > this circumstance. > > Thanks, > Jeremy >
-- You received this message because you are subscribed to the Google Groups "sequel-talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sequel-talk. For more options, visit https://groups.google.com/d/optout.
