잠시 생각해 본 결과이 모델을 만드는 올바른 방법이 무엇인지 전혀 알지 못합니다.레일에서 서브 스크립 션 모델링하기
나는 이미지 공유에 중점을 둔 웹 사이트를 운영하고 있습니다. 사용자를 행복하게 만들기 위해 여러 다른 이미지 컬렉션을 구독 할 수 있기를 바랍니다.
지금까지 두 가지 유형의 컬렉션이 있습니다. 하나는 특정 이미지에서 작업 한 사람들을 정의하는 "생성자"관계입니다. 그 모습은 다음과 같습니다 :
사용자는 이미지에 객관적으로 존재하지 않는 주관적인 태그로 이미지에 태그를 지정할 수 있습니다. 전형적인 주관적인 꼬리표는 "우스운"또는 "슬픈"것을 포함 할 것입니다. 즉 다음과 같이 구현 것 :
class SubjectiveTag < ActiveRecord::Base
# Has a "name" field. The reason why the names of tags are a first-class DB model
# is so we can display how many times a given image has been tagged with a specific tag
end
class SubjectiveCollection < ActiveRecord::Base
# Basically, "User X tagged image Y with tag Z"
belongs_to :subjective_tag
belongs_to :user
has_many :images, through: :subjective_collection_member
end
class SubjectiveCollectionMember < ActiveRecord::Base
belongs_to :subjective_collection
belongs_to :image
end
나는 사용자가 로그인 할 때 홈 페이지에 순차적으로, 제작자 및 SubjectiveTags 모두 구독, 그 컬렉션에있는 모든 이미지를 표시 할 수 있도록하려면
. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 여러 구독 유형 (예 : SubjectiveTagSubscription
및 CreatorSubscription
) 중 하나를 사용해야합니까? 이 방법을 사용하면 각 컬렉션의 모든 이미지를 검색하는 가장 효율적인 방법은 무엇입니까?
다른 모델에는 'has_many : subscriptions, as : : subscribeable'이 필요합니다. – Substantial
나는 이것을 이미 시도했다. 구독의 이미지를 찾으려고하면 ActiveRecord가 다형성 has_many : through 관계를 지원하지 않는다는 것을 알 수 있습니다. – TheSuper
맞습니다. 하나의 쿼리로 결과를 가져올 수 없으므로 다형성 연관을 'have_many_through'할 수 없습니다.개요 (사용자의 홈페이지에서 구독 정보로 이미지를 표시) 한 경우 사용자의 구독 정보 (하나의 검색어)를 반복 한 다음 각 구독 정보 (각 구독 정보 하나씩)를 가져와야합니다. –