Я работаю на QA месте, где у меня есть модель Вопрос и модель ответа и связь между ними, какНесколько ассоциаций между одной и той же модели в Rails
class Question < ActiveRecord::Base
has_many :answers
end
Мои ответы модель
class Answer < ActiveRecord::Base
belongs_to :question
end
Теперь мне нужно создать другую связь между вопросом и ответом, где я могу получить доступ к одному ответу, который автор вопроса находит лучшим. Так что мне нужно что-то вроде
class Question < ActiveRecord::Base
has_many :answers
has_one :accepted_answer, :class_name => 'Answer', :foreign_key => ['answer_id, accepted']
end
Это объединение не справедливо, как у меня нет никакого способа указать, что я принял ожидать, чтобы быть правдой, и я получаю ошибку MySQL. Есть ли способ заставить это работать, используя логический как составной внешний ключ?
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)
Решение, которое я до сих пор работаю создает ассоциацию с ответами на вопрос следующим образом
class Answer < ActiveRecord::Base
belongs_to :question
has_one :inverse_accepted_answer, :class_name => 'Question', :foreign_key => 'accepted_id'
end
и вопрос, как
Class Question < ActiveRecord::Base
belongs_to :answer, :foreign_key => 'accepted_id'
has_many :answers
end
Проблема в этом случае я получить доступ выбранный ответ как Question.find (10) .answer вместо того, чтобы использовать более выразительное имя как selected_answer.
Есть ли способ, которым я могу определить имя для отношения from belongs_to end. Во-вторых, что было бы правильным путем. Техника, которую я, кажется, окрестные исправить
Я использую Rails 3 и рубин 1.9.2
Заранее спасибо
Кажется, что необходимо сделать трюк. Удивительно, я никогда об этом не думал. – Sid 2010-12-01 06:00:52