0

question、question_choices、response の 3 つのテーブルがあります。

質問

  • ID
  • 名前
  • 鬼ごっこ

Question_Choice

  • ID
  • Question_id
  • ラベル
  • 価値

応答

  • ID
  • ユーザーID
  • Question_id
  • 価値

応答が与えられたら、質問タグとそのための question_choice ラベルを確認したいと思います。質問に関連する応答または選択を取得することは問題ありませんが、「値=値」と言う必要があるため、選択に関連する応答を取得することは困難です。関係を設定しようとしました:has_one, :through => :questionが、「値=値」を表現する方法がわかりません。生のSQLを使用する必要がありますか?

4

2 に答える 2

1

テーブル構造を変更したくないと思います(これが最も簡単な解決策です)。これは、現在のテーブル構造のソリューションです。

アプリ/モデル/質問.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_choicequestion_choice最初の の が表示されますresponse

于 2013-06-19T20:20:29.007 に答える