使用Ruby on Rails Active Record建模一本书

时间:2009-10-14 19:00:16

标签: ruby-on-rails oop data-modeling

我正在使用ruby on rails建模在线图书。这本书有章节,每章都有页面。建模这部分很容易。我喜欢做的是跟踪每个用户阅读的页面以及他们是否喜欢该页面/用户是否完成了该书。如何建议建模在轨道中跟踪这个?我理想上喜欢说给我所有用户正在阅读的书籍,然后可以访问该书以及该用户阅读该书的状态信息。

2 个答案:

答案 0 :(得分:0)

BookState成为用户和书之间的中间对象。

class User < ActiveRecord::Base
   has_many :book_states
   has_many :books, :through => :book_state
end

class BookState < ActiveRecord::Base
   belongs_to :user
   belongs_to :book
end

class Book < ActiveRecord::Base
   has_many :book_states
end

BookState有当前位置,喜欢/不喜欢等。如果你要求用户的书籍状态,那也会给你书。

答案 1 :(得分:0)

这很有道理。我看到的一个问题是收集一个问题的统计数据(这个答案的百分比是多少)?既然这些数据是序列化的哈希?那怎么样:

book
    has_many user_books
 has_many users through user_books
 has_many chapters

chapter
 belongs_to book
 has_many pages

page
 belongs_to chapter
 has_many user_pages

user
    has_many user_books
 has_many books through user_books

user_book
 belongs_to user
 belongs_to book
 has_many user_pages

user_page
 belongs_to user_book
 belongs_to page
你怎么看?