我有三个表:问题,问题回答和回复。
问题
Question_Choice
响应
鉴于回复,我希望看到问号标签和question_choice标签。得到回答或选择与问题相关是没有问题的,但得到与选择相关的回应证明是具有挑战性的,因为我需要说" value = value"。我尝试过建立:has_one, :through => :question
关系,但我不确定如何表达" value = value"东西。我只需要使用原始sql吗?
答案 0 :(得分:1)
我假设您不想更改表结构(这将是最简单的解决方案)。这是您当前表结构的解决方案:
应用/模型/ question.rb 强>
class Question < ActiveRecord::Base
has_many :question_choices
end
应用/模型/ question_choice.rb 强>
class QuestionChoice < ActiveRecord::Base
belongs_to :question
end
应用/模型/ response.rb 强>
class Response < ActiveRecord::Base
belongs_to :question
belongs_to :question_choice, :primary_key => 'value', :foreign_key => 'value', :conditions => proc { "question_id = #{self.question_id}" }
end
Response.first.question_choice
将为您提供第一个question_choice
的{{1}}。
答案 1 :(得分:0)
我猜测问题有很多问题选择,而且回答只有一个“选定”问题选择。要对此进行建模,您还需要在响应和问题选择之间建立直接关联,例如
class Question < ActiveRecord::Base
has_many :question_choices
end
class QuestionChoice < ActiveRecord::Base
belongs_to :question
end
class Response < ActiveRecord::Base
belongs_to :user
belongs_to :question
belongs_to :question_choice
end
这意味着您需要在question_choice_id
表格中添加responses
列。