Je travaille sur le site QA où j'ai un modèle de question et un modèle de réponse et l'association entre eux est commeplusieurs associations entre le même modèle dans Rails
class Question < ActiveRecord::Base
has_many :answers
end
Mon modèle réponses est
class Answer < ActiveRecord::Base
belongs_to :question
end
Maintenant, j'ai besoin de créer une autre association entre question et réponse où je peux accéder à la réponse que l'auteur de la question trouve le meilleur. Donc ce que je besoin est quelque chose comme
class Question < ActiveRecord::Base
has_many :answers
has_one :accepted_answer, :class_name => 'Answer', :foreign_key => ['answer_id, accepted']
end
Cette association ne parvient pas à juste titre que je n'ai aucun moyen de préciser que je me attends accepté d'être vrai et j'obtiens une erreur MySQL. Existe-t-il un moyen que je peux obtenir cela pour travailler tout en utilisant un booléen comme clé étrangère composite?
MySQL server version for the right syntax to use near '["answer_id", "accepted"] = 30) LIMIT 1' at line 1: SELECT `answers`.* FROM `answers` WHERE (`answers`.["answer_id", "accepted"] = 30)
La solution que j'ai actuellement utilisé est la création d'une association de réponses à la question comme suit
class Answer < ActiveRecord::Base
belongs_to :question
has_one :inverse_accepted_answer, :class_name => 'Question', :foreign_key => 'accepted_id'
end
et pour la question comme
Class Question < ActiveRecord::Base
belongs_to :answer, :foreign_key => 'accepted_id'
has_many :answers
end
Le problème est dans ce cas je avoir accès à la réponse sélectionnée sous Question.find (10) .answer au lieu d'utiliser un nom plus expressif que selected_answer.
Y a-t-il un moyen de définir un nom pour la relation de la partie belongs_to. Deuxièmement, quelle serait la bonne façon d'y parvenir? Je technique semble arrondir au sujet de corriger
J'utilise Rails 3 et Ruby 1.9.2
Merci à l'avance
Il semble que devrait faire la tour. Génial, je n'y avais jamais pensé. – Sid