Jeremy, Perfect! It works great. One question though ... why is it "one_to_many :book_tune_tunings" rather than the singular "one_to_many :book_tune_tuning"? Is the plural for the whole thing and not just "tunings" as I'm thinking?
Scott P.S. The page worked great too. Thanks again. On Sun, Dec 12, 2010 at 2:52 PM, Jeremy Evans <[email protected]>wrote: > On Dec 12, 11:18 am, Scott LaBounty <[email protected]> wrote: > > OK, I got the table creation piece, but I'm still not sure how to set up > the > > models. Here's what I have and what I'd like to work (changed key to > tuning > > because that was getting too confusing for an example) ... > > > > << > > require 'rubygems' > > require 'sequel' > > > > DB = Sequel.sqlite > > > > DB.create_table :books do > > primary_key :id > > column :title, :text, :unique=>true > > end > > > > DB.create_table :tunes do > > primary_key :id > > column :title, :text, :unique=>true > > end > > > > DB.create_table :tunings do > > primary_key :id > > column :tuning, :text, :unique=>true > > end > > > > DB.create_table :books_tunes_tunings do > > primary_key :id > > foreign_key :book_id, :books > > foreign_key :tuning_id, :tunings > > foreign_key :tune_id, :tunes > > end > > > For a three way join table, you usually want to use a join model: > > > class Book < Sequel::Model > one_to_many :book_tune_tunings > many_to_many :tunes, :join_table=>:books_tunes_tunings > many_to_many :tunings, :join_table=>:books_tunes_tunings > > end > > class Tune < Sequel::Model > one_to_many :book_tune_tunings > many_to_many :books, :join_table=>:books_tunes_tunings > many_to_many :tunings, :join_table=>:books_tunes_tunings > > end > > class Tuning < Sequel::Model > one_to_many :book_tune_tunings > many_to_many :books, :join_table=>:books_tunes_tunings > many_to_many :tunes, :join_table=>:books_tunes_tunings > > end > > class BookTuneTuning < Sequel::Model(:books_tunes_tunings) > many_to_one :book > many_to_one :tune > many_to_one :tuning > end > > > book1 = Book.create(:title => 'Book 1') > > book2 = Book.create(:title => 'Book 2') > > > > tune1 = Tune.create(:title => 'Tune 1') > > tune2 = Tune.create(:title => 'Tune 2') > > > > tuning1 = Tuning.create(:tuning => 'C') > > tuning2 = Tuning.create(:tuning => 'D') > > book1.add_book_tune_tuning(:tune=>tune1, :tuning=>tuning2) > book2.add_book_tune_tuning(:tune=>tune2, :tuning=>tuning1) > > > And ... ask long as I'm bothering everyone, how do I actually put > > information in the join table? I'd also like to have a page number there > (at > > least that's where it makes sense to me). Is that the right way to do it? > > How would I in the "add_tune_tuning" method also specify the page number? > > You'd just add a page_number column to the books_tunes_tunings table. > With a join table model, it's really easy to handle, you'd just add a > hash entry for :page_number when calling the add_book_tune_tuning. > > Jeremy > > -- > You received this message because you are subscribed to the Google Groups > "sequel-talk" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<sequel-talk%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/sequel-talk?hl=en. > > -- Scott http://steamcode.blogspot.com/ -- You received this message because you are subscribed to the Google Groups "sequel-talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sequel-talk?hl=en.
