2015-02-11 97 views
0

我有一個的has_many:通過我的應用程序三種模式之間的關係:Rails的has_many_through協會

  • 用戶
  • 問題
  • 回答

我使用Active Record Associations docs建立關係。

User.rb

has_many :answers 
has_many :questions, through: :answers 

Question.rb

has_many :answers 
has_many :users, through: :answers 

Answer.rb

belongs_to :question 
belongs_to :user 

這似乎是工作。

User.find(1).questions 
User.find(1).answers 

以上兩種方法都正好返回我期望的結果。但是,我需要的是將問答作爲一對返回。

我該怎麼說:「好吧,獲取current_user已經回答的所有問題,並將答案一併返回。」

回答

1

我將它添加到控制器:

@questions = Question.joins(:answers).where(answers: { id: current_user.answers.pluck(:id) }) 

然後在你看來,對於每一個問題,你會得到這樣的回答:

- @questions.each do |question| 
    - answers = question.answers.where(user_id: current_user.id) 

你可以(也應該)總是部分代碼作爲範圍移動到模型中。

+0

完美!我在我的視圖中使用了以下內容:http://pastebin.com/z9s6mq3m,並按照我的意願進行顯示。謝謝! – brianrhea 2015-02-11 16:12:07