## example Page call ##
Page.last.chapter.book.subjects.first
## models ##
class CatalogEntry < ActiveRecord::Base
belongs_to :subject
belongs_to :book
end
class Book < ActiveRecord::Base
has_many :catalog_entries
has_many :subjects, :through => :catalog_entries
has_many :chapters
end
class Subject < ActiveRecord::Base
has_many :catalog_entries
has_many :books, :through => :catalog_entries
end
class Chapter < ActiveRecord::Base
belongs_to :book
has_many :pages
end
class Page < ActiveRecord::Base
belongs_to :chapter
end
## seeds.rb ##
subject01 = Subject.create!(:name => 'Subject One')
subject02 = Subject.create!(:name => 'Subject Two')
book01 = Book.create!(:name => 'Book One')
book02 = Book.create!(:name => 'Book Two')
book01_chapter01 = Chapter.create!(:book => book01, :name => 'Chapter One')
book01_chapter02 = Chapter.create!(:book => book01, :name => 'Chapter Two')
book02_chapter01 = Chapter.create!(:book => book02, :name => 'Chapter One')
book02_chapter02 = Chapter.create!(:book => book02, :name => 'Chapter Two')
book01_chapter01_page01 = Page.create!(:chapter => book01_chapter01,
:number => 1)
book01_chapter02_page02 = Page.create!(:chapter => book01_chapter02,
:number => 2)
book02_chapter01_page01 = Page.create!(:chapter => book02_chapter01,
:number => 1)
book02_chapter02_page02 = Page.create!(:chapter => book02_chapter02,
:number => 2)
book01.subjects << subject01
book01.subjects << subject02
book01.save
book02.subjects << subject01
book02.subjects << subject02
book02.save
> --
> You received this message because you are subscribed to the Google
> Groups "Ruby on Rails: Talk" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/rubyonrails-talk/-/T35nCJDJ45YJ.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To unsubscribe from this group, send email to
> rubyonrails-ta...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-talk?hl=en.
I like has_many through with a CatalogEntry join model.
That, too, is an opinion. But one probably more broadly founded than mine.Before proceeding with this section, I must clear my conscience by stating that has_and_belongs_to_many is practically obsolete in the minds of many Rails developers, including the authors of this book. Use has_many :through instead and your life should be a lot easier. The section is preserved in this edition almost exactly as it appeared in the first, because it contains good techniques that enlighten the reader about nuances of Active Record behavior.
--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/AGK7uvDgf-4J.