Reddit 복제본을 만들 때 schneems의 멋진 소개를 Rails tutorial에 전달하고 "투표"구조를 확장하여 질문뿐만 아니라 주석도 처리하려고합니다 컨트롤러에 question_id
과 comment_id
을 전달하는 방법을 알아내는 데 어려움을 겪고 있었기 때문에 사용량을 question_id
으로 제한하는 대신 그에 따라 위 또는 아래로 투표를 할 수있었습니다.두 개의 다른 객체에 대해 동일한 "투표"컨트롤러 동작 사용
현재, 다음과 같이 정의, 내 VotesController
에 불과 create
기능이있다 : 당신의 도움에 대한
def create
@vote = Vote.where(:question_id => params[:vote][:question_id], :user_id => current_user.id).first #the question_id is baked right in..
if @vote
@vote.up = params[:vote][:up]
@vote.save
else
@vote = current_user.votes.create(params[:vote])
end
redirect_to :back
end
감사합니다!
감사합니다, 'Hash # slice' 링크를 올리기 위해서! 위의 코드는 질문에 게시 된 첫 번째 댓글에 잘 작동합니다. 그러나 투표 링크를 클릭해도 오류는 발생하지 않았지만 동일한 질문에 게시 된 후속 의견에 대해서는 투표 할 수 없었습니다. 설명으로, 각각의 질문은 'has_many' 의견입니다. Im은 왜 그 입력을 한 번만 가져 왔는지에 대해 확신하지 못했습니다. 각 comment_ids는 고유 한 피드입니다. 다시 한 번 감사드립니다! – daspianist
이것 좀 더 살펴본 후, 나는 그것이 문제를 일으키는'Votes.rb' 모델의 유효성을 확인했다. 나는'validates : user_id, : uniqueness => {: scope => : question_id}'를 가지고 있는데, 사용자가 질문을 한 번 이상 투표하지 못하게한다. 그러나 동일한 '쇼'페이지에서 의견을 내 질문으로 렌더링하기 때문에 사용자로 문제를 일으키는 것은 질문 아래에 나타나는 하나의 의견에 대해서만 투표 할 수 있다고 생각합니다. 당신이 가진 통찰력은 위대 할 것이고, 다시 감사 할 것입니다. – daspianist
예, [다형성 연관] (http://guides.rubyonrails.org/association_basics.html#polymorphic-associations)의 완벽한 사용 사례 인 것 같습니다. 기본적으로'Vote belongs_to : voteable, polymorphic : true'와'Question has_many : votes, as : : voteable'입니다. –