Как смоделировать книгу в MVC - PullRequest
0 голосов
/ 15 июля 2011

Как я могу смоделировать книгу в MVC.Я использую Ruby on Rails.

В книге есть главы, а в главах есть страницы.

Должен ли я использовать книгу в качестве модели или должна быть отдельная модель для каждой книги, главы и затем страниц.

1 Ответ

3 голосов
/ 15 июля 2011

Наиболее естественный способ сделать это:

book.rb

class Book < ActiveRecord::Base
  has_many :chapters
end

chapter.rb

class Chapter < ActiveRecord::Base
  belongs_to :book
  has_many :pages
end

page.rb

class Page < ActiveRecord::Base
  belongs_to :chapter
end

Затем, в каком бы виде вы ни находились, когда вы называете свою книгу (хамл):

- for chapter in @book.chapters
  = chapter.title
  - for page in chapter.pages
    = page.content

, и вы можете разбивать на страницы, как считаете нужным.

РЕДАКТИРОВАТЬ В @apneadiving point, добавленовключает в себя для N + 1 запросов.Таким образом, из вашего books_controller.rb, чтобы уменьшить количество запросов, вы можете позвонить:

def show
  @book = Book.includes(:chapters => [:pages]).find(params[:id])
end

Это загрузит Книгу со всеми связанными с ней главами и страницами без дополнительных запросов.

...