Ruby on rails 如何在MVC中建模一本书

Ruby on rails 如何在MVC中建模一本书,ruby-on-rails,ruby-on-rails-3,model-view-controller,data-modeling,Ruby On Rails,Ruby On Rails 3,Model View Controller,Data Modeling,如何在MVC中为一本书建模。我正在使用Ruby on Rails 书有章,章有页 我应该使用一本书作为模型,还是应该为每本书、每章和每一页分别设置一个模型。最自然的方法是: book.rb class Book < ActiveRecord::Base has_many :chapters end 你可以随意翻页 编辑 在@apheadingpoint中,添加了N+1查询的include。因此,从books_controller.rb,为了减少查询数量,您可以调用: def show

如何在MVC中为一本书建模。我正在使用Ruby on Rails

书有章,章有页


我应该使用一本书作为模型,还是应该为每本书、每章和每一页分别设置一个模型。

最自然的方法是:

book.rb

class Book < ActiveRecord::Base
  has_many :chapters
end
你可以随意翻页

编辑 在@apheadingpoint中,添加了N+1查询的include。因此,从books_controller.rb,为了减少查询数量,您可以调用:

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

这将加载书籍及其所有相关章节和页面,而无需进行其他查询。

最自然的方法是:

book.rb

class Book < ActiveRecord::Base
  has_many :chapters
end
你可以随意翻页

编辑 在@apheadingpoint中,添加了N+1查询的include。因此,从books_controller.rb,为了减少查询数量,您可以调用:

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

这将加载书籍及其所有相关章节和页面,而无需进行其他查询。

取决于您希望对书籍执行的操作。例如,您是否需要处理单独的章节或页面,或者只需知道有多少章节或页面就足够了?是的,用户将能够在线浏览完整的书籍。这取决于您对书籍的处理方式。例如,您是否需要处理单独的章节或页面,或者只需知道有多少章节或页面就足够了?是的,用户将能够在线浏览完整的书籍。您缺少防止N+1查询所需的所有内容这会创建2级嵌套模型吗?是的。将有两个级别的嵌套。您缺少防止N+1查询所需的所有包含。这会创建两个级别的嵌套模型吗?是。将有两个嵌套级别。
def show
  @book = Book.includes(:chapters => [:pages]).find(params[:id])
end