2013-03-08 3 views
2

내 앱에서 public_activity 및 acts_as_follower라는 두 개의 보석을 사용하고 있습니다. 나는 사용자가 밴드뿐만 아니라 다른 사용자를 따라갈 수있는 곳에서 acts_as_follower를 설정했습니다.레일스 public_activity 다음으로 다형성 피드

문제는 수행중인 개체의 활동을 피드 밖으로 만드는 것입니다. 공개 활동을 사용하여 권장되는 방법을 사용하여 전역 피드를 얻었습니다.

@activities = PublicActivity::Activity.order("created_at desc") 

잘 작동합니다. 사용자와 밴드가 가질 수 있기 때문에 문제가있는 경우에만이 owner_id를 사용 owner_type, 피드가 생성을 지정하지 않고

@activities = PublicActivity::Activity.order("created_at desc").where(owner_id: current_user.all_following, owner_type: ????????) 

: 그러나 나는의 라인을 따라 뭔가를 reqiure 것이다하는 다음과 같은 피드를하는 것도 싶습니다 같은 이드. 이 경우 소유자 유형을 어떻게 지정할 수 있습니까?

답변

0

오언 (Owen), 여기서는 polymorphic associations이라는 것을 사용하여 어떻게 작동하는지 알아 봅니다. ids뿐만 아니라 객체의 유형을 데이터베이스에 저장하는 것입니다. 사용자의

1

:

@activities = PublicActivity::Activity.where(owner_id: current_user.follows_by_type('User'), owner_type: 'User').order("created_at desc") 

대역 :

@activities = PublicActivity::Activity.where("(owner_id IN (?) AND owner_type = 'User') or (owner_id IN (?) AND owner_type = 'Band')", current_user.follows_by_type('User'), current_user.follows_by_type('Band')).order("created_at desc") 
: 혼합 용

@activities = PublicActivity::Activity.where(owner_id: current_user.follows_by_type('Band'), owner_type: 'Band').order("created_at desc")