현재 레일즈 앱에는 Post
, User
및 Movie
의 3 가지 모델이 있습니다. 나는 사용자가 동영상에 대한 게시물을 작성할 수 있도록하려면 지금레일 : 모델 설계 및 다른 사람들과 올바르게 연결하기위한 도움말
Post: id: integer, user_id: integer, location_id: integer, description: string
Movie: id: integer, name: string, rating: decimal, ...
User: id: integer, email: string, encrypted_password: string ...
아래 모델에서 중요한 필드를 나열했습니다, 그리고 내 사이트 다음을 표시합니다 게시물. 영화에 대한 기존 게시물이있는 경우 사용자가 영화에 할당 한 rating
은 기존 등급으로 추가 및 평균되어야하며 사용자가 할당 한 description
은 이미 설명 목록에 추가되어야합니다 영화에 있습니다.
첫 번째 질문 : Movie
모델의 일부로 설명 목록을 영구 저장하려면 어떻게합니까? 예를 들어 Movie
모델의 일부로 문자열 배열을 저장할 수 있습니까? 아니면이 목적으로 새로운 Description
모델을 만들어야합니까?
그런 다음이 모델을 연결하여 예상대로 작동하도록하려면 어떻게해야합니까?
Post -> belongs_to -> User
, User -> has_many -> Posts
, Post -> has_one -> Movie
하지만이 그들을 연결하는 올바른 방법입니다 확실하지 않다, 나는 :through
협회와 경험이없는
평균 등급을 유지하려면 rating_count를 유지하여 해당 영화를 평가 한 사용자 수를 추적해야합니다. rating = 0 및 rating_count = 0으로 시작하십시오. 사용자가 영화를 평가하면 새 등급 = (이전 등급 + 새 등급)/(rating_count + 1)입니다. 그리고 rating_count를 1 씩 증가시킵니다. –