Comme sur StackOverflow, il y a une question et cette question a beaucoup de réponses.
Mais une seule des réponses est marquée comme acceptée.
Comment implémenter la même chose dans Rails?Rails: Comment modéliser "question a beaucoup de réponses mais une seule réponse acceptée"?
Les modèles et les tableaux que j'ai sont:
class Question < ActiveRecord::Base
has_many :answers
has_one :accepted_answer # how to get this to work?
end
#Table: questions(id,question_text)
class Answer < ActiveRecord::Base
belongs_to :question
end
#Table: answers(id, question_id)
MISE À JOUR (@voldy, merci, mais cela ne semble pas fonctionner!)
I ajouté belongs_to :accepted_answer, :class_name => 'Answer'
dans le modèle de question. a ensuite ajouté un accepted_answer_id
et couru ce code:
@question = current_user.questions.find(3)
an_answer = Answer.find(1) #presuming this is the answer i want to accept
@question.accepted_answer = an_answer
@question.save!
Mais le champ accepted_answer_id
dans questions
table reste nulle? J'ai également essayé avec le nom de champ comme answer_id
, mais le même résultat.
Essayez '@question.answer_id = an_answer.id'. Si vous souhaitez utiliser 'accepted_answer_id' au lieu de' answer_id', ajoutez ': foreign_key =>" accepted_answer_id "' à la relation. – Voldy