2009-10-14 5 views
1

Ruby on Rail을 이용한 온라인 서적 모델링. 책에는 장이 있으며 각 장에는 페이지가 있습니다. 이 파트의 모델링은 쉽습니다. ID를 사용하면 각 사용자가 읽은 페이지와 언제 그리고 그 페이지를 좋아하는지 여부/사용자가 책을 완성했는지 여부를 추적 할 수 있습니다. 이것을 레일에서 모델링하는 것을 어떻게 추천할까요? Id는 이상적으로 사용자가 읽었거나 읽은 모든 책을 나에게주고 그 책에 대한 사용자의 독서에 대한 상태 정보와 함께 책에 대한 액세스 권한을 부여하고자합니다.Ruby on Rails로 모델링하기 Active Record

답변

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뿐만 아니라 당신에게 책을 줄 것이다 현재 위치, 좋아하는/싫어하는 것 등은 사용자의 bookStates을 요청하는 경우가 있습니다.

+0

안녕하세요 Jacob, 빠른 답장을 보내 주셔서 감사합니다. 그러나 hte 사용자가 특정 페이지 (일부 페이지는 읽은 페이지, 일부 페이지는 건너 뛰기)를 읽는 중이며 어떤 페이지/섹션이 읽히거나 건너 뛴지 표시하는 책의 사본을 제공 할 수 있기를 바랍니다. BookState 대신 PageState를 사용합니까? 그것은 문제의 전체 세트를 제시하는 것처럼 보인다. – LMH

+0

저는 책 상태 내에서 페이지 상태를 해시로 모델링했습니다. –

+0

페이지 상태와 실제 페이지 자체 사이에 논리적 관계가있는 것과 달리 수동으로 모델 위에 상태를 채우거나 그립니다. – LMH

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 

어떻게 생각하세요?

+0

그래, 그게 효과가있는 것처럼 보입니다. 챕터 내의 페이지 순서를 어떻게 나타내십니까? –

+0

잘 잡으려면 페이지에 주문 변수가 있어야합니다. Jacob 모든 것에 다시 한 번 감사드립니다. – LMH

관련 문제