연습을 위해 레일 4를 사용하여 Twitter 클론을 만들고 있습니다. 사용자가 로그인하면 타임 라인에 따라 내가 팔로우하는 사람들 (친구)의 트윗과 자신의 트윗을 DESC 순서로 표시하고자합니다. 내 트위트 # index를 내 타임 라인으로 사용하고 있습니다. 현재 내가 사용자에게 데이터베이스의 모든 트윗을 표시하고 있습니다 : 컨트롤러에서 배열을 반복하는 방법
def index
@tweets = Tweet.all.order("created_at DESC")
end
내가 사용자의 친구에 기록 전류를 포함 @user_friendships라는 인스턴스 변수를 추가, 마녀 그때를 통해 반복하고 자신의 트윗에 액세스 할 수 있습니다. 내가 user_friendships을 통해 루프를 원하고 CURRENT_USERS의 트윗을 통해 친구와 다음 트윗 뷰뿐만 아니라 루프의 잡아하지 않습니다
def index
@user_friendships = current_user.user_friendships.all
@tweets = Tweet.all.order("created_at DESC")
end
: 여기처럼 지금 모습입니다.
컨트롤러에서 user_friendships에있는 current_user 및 각 친구 트윗의 트윗을 포함하는 인스턴스 변수를 하나 갖고 싶습니다. View에서 새로운 배열을 반복하기 만하면됩니다.
모델 코드
### User.rb
has_many :tweets
has_many :user_friendships
has_many :friends, through: :user_friendships
acts_as_voter
def to_param
username
end
### user_friendship.rb
belongs_to :user
belongs_to :friend, class_name: 'User', foreign_key: 'friend_id'
### tweet.rb
belongs_to :user
이것은 완벽합니다, 고마워요! – zhs
한 가지 더 질문합니다. DESC 순서로 created_at에 의해 정렬되도록하고 싶다면 모델에서 그렇게할까요? 다시 한 번 감사드립니다 – zhs
컨트롤러에서 주문하는 것이 더 좋습니다. 이렇게하면 모델에서 메소드를 오염시키지 않고 'created_at'또는 다른 속성을 사용하여 더 많은 장소에서 매번 사용할 수 있습니다. – Nermin